0

共有三个数组的形式:

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

尽可能将这三个阵列组合成下一个物种之一?

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 Simple HTML DOM Parser Manual 构建数组

// 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;
}

两个原因:

  1. 你实际上想要完成的事情要清楚得多。
  2. 它不那么脆。假设一个特定的“div.narrow_column div”元素缺少这些字段之一?在这种情况下,您的三个数组可能大小不同,或者数组中的项目可能与具有相同索引的其他项目不对应。如果您迭代容器元素一次并在$art_elem上下文中获取您需要的项目,即使某些项目丢失,您也可以优雅地降级。
于 2012-11-20T12:53:27.487 回答
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

假设数组总是有相同数量的元素

$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 回答
0

你可以这样做array_merge——合并一个或多个数组

试试看

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

键盘

于 2012-11-20T12:41:36.053 回答
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 回答