0

次の形式の3つの配列があります。

Array (
    [0] => NAME
    [1] => NAME
    [n] => n
)
Array (
    [0] => DATE
    [1] => DATE
    [n] => n
)
Array (
    [0] => TEXT
    [1] => TEXT
    [n] => n
)

次の種の1つでこれらの3つのアレイを可能な限り組み合わせることができますか?

Array(
    Array (
        [0] => NAME
        [1] => DATE
        [2] => TEXT
    )
    Array (
        [0] => NAME
        [1] => DATE
        [2] => TEXT
    )
        Array (
        [0] => NAME
        [1] => DATE
        [2] => TEXT
    )
    and etc.
)

配列は、ライブラリPHP SimpleHTMLDOMパーサーマニュアル を使用して構築されます。

// Search for the name
$array_nameNews = array();
foreach($html->find('div.narrow_column div h2 a') as $element) {    
    $nameNews = $element->innertext;
    $array_nameNews[] = $nameNews;
}

// Search the date
$array_dateNews = array();
foreach($html->find('div.narrow_column div div.postdate') as $element) {
    $dateNews = $element->innertext;
    $array_dateNews[] = $dateNews;
}

// Search text
$array_textNews = array();
foreach($html->find('div.narrow_column div div.postdate span') as $element) {
    $textNews = $element->innertext;
    $array_textNews[] = $textNews;
}
4

5 に答える 5

2

他の人が示唆しているように、と最終結果の配列を使用してこれを行うことができarray_merge()ますが、代わりにこれを行う必要があります。

$articles = array();
foreach($html->find('div.narrow_column div') as $art_elem) {
    $article = array(
        'name' => $art_elem->find('h2 a', 0)->plaintext,
        'date' => $art_elem->find('div.postdate', 0)->plaintext,
        'text' => $art_elem->find('div.postdate span')->innertext,
    );
    $articles[] = $article;
}

2つの理由:

  1. あなたが実際に達成しようとしていることははるかに明確です。
  2. もろくないです。特定の'div.narrow_columndiv'要素にこれらのフィールドの1つがないとしますか?この場合、3つの配列のサイズが異なるか、配列内のアイテムが同じインデックスを持つ他のアイテムに対応していない可能性があります。コンテナ要素を1回繰り返し、コンテキスト内で必要なアイテムを取得すると$art_elem、一部のアイテムが欠落している場合でも、正常に機能を低下させることができます。
于 2012-11-20T12:53:27.487 に答える
0

これを行うには、次のようにしますarray_merge—1つ以上のアレイをマージします

次のようにしてみてください

  $result = array_merge($array1, $array2);

コードパッド

于 2012-11-20T12:41:36.053 に答える
0

あなたはこのようなものを見ているでしょう

<?php
$formatted = array();
foreach ($array_nameNews as $key => $news) {
  $one_piece = new array();
  $one_piece['NAME'] = $news;
  $one_piece['DATE'] = $array_dateNews[$key];
  $one_piece['TEXT'] = $array_textNews[$key];
  $formatted[] = $one_piece
}
于 2012-11-20T12:44:23.717 に答える
0

まず第一に、Array異なるPHP Simple HTML DOM Parser Manualものです..配列の場合はこれを試してみてください

$first = array('1','2','3');
$second = array('11','22','33');
$third = array('111','222','333');

 for($i=0;$i<count($first);$i++)
 {
  $result[] = array($first[$i],$second[$i],$third[$i]); 
 }
echo "<pre>";print_r($result);echo "</pre>";exit;

申し訳ありませんが、私の言い回しが気に入らない場合は。

于 2012-11-20T12:51:17.190 に答える
0

配列が常に同じ数の要素を持っていると仮定します

$t = count($array_nameNews);
$sorted = array();
for ($i=0; $i<$t, $i++) {
    $sorted[] = array(
        $array_nameNews[$i],
        $array_dateNews[$i],
        $array_textNews[$i],
    );
 }
于 2012-11-20T12:54:31.493 に答える