Php将值插入到多维数组中

时间:2015-04-07 14:13:49

标签: php arrays

好的,我正在使用simple_dom_html解析一个html文件,一切正常。 我想要做的是将值插入到多维数组中。

这是我的代码:

foreach ($html->find('li[class="searchFacetDimension"]') as $filtros) {
    foreach($filtros->find('div[class="dimensionContainer"] h4') as $titulo){
            echo $titulo->plaintext . "<br>";
        foreach($filtros->find('div[class="dimensionContainer"] ul li a') as $link){
            echo $link->plaintext . "<br>";
        }
        echo "<br>";
    }
}

输出:

第1类

  • sub 1

  • sub 2

第2类

  • sub 1

我要做的是将其输出为数组,如:

Array
(
    [0] => Array
        (
            [cat] => Category 1
            [subs] => Sub 1, Sub 2
        )

    [1] => Array
        (
            [cat] => Category 2
            [subs] => Sub 1
        )

)

2 个答案:

答案 0 :(得分:1)

你做了所有艰苦的工作。你所要做的就是制作一个数组:

$array = array();
foreach ($html->find('li[class="searchFacetDimension"]') as $filtros) {
    foreach($filtros->find('div[class="dimensionContainer"] h4') as $titulo){
            $array[] = array('cat'=>$titulo->plaintext,'subs'=>'');
        foreach($filtros->find('div[class="dimensionContainer"] ul li a') as $link){
            if($array[sizeof($array)-1]['subs'] != '')
                $array[sizeof($array)-1]['subs'].= ', ';
            $array[sizeof($array)-1]['subs'].= $link->plaintext;
        }
    }
}
print_r($array);

注意:当subs不为空时,我确实添加了一些关于仅使用逗号分隔符的复杂功能。我把它弄得很冗长,很清楚这就是我在做什么。

答案 1 :(得分:1)

以下是您需要的代码:

$result = array();
foreach ($html->find('li[class="searchFacetDimension"]') as $filtros) {
    $aux = array()
    foreach($filtros->find('div[class="dimensionContainer"] h4') as $titulo){
            //echo $titulo->plaintext . "<br>";
            $aux['cat'] = $titulo->plaintext;
        foreach($filtros->find('div[class="dimensionContainer"] ul li a') as $link){
            //echo $link->plaintext . "<br>";
            $aux['subs'][] = $link->plaintext;
        }
        //echo "<br>";
    }
    $aux['subs'] = implode(", ",$aux['subs']);
    $result[] = $aux;
}
echo "<pre>";
print_r($result);
echo "</pre>";