多维数组-提取数据


Multidimensional Array - Pulling Data

PHP新手,在花了几个小时研究这里之后,似乎没有什么是我真正需要的。我有一个多维数组,我正在寻找拉数据和计数。例如:

array (
  'loyola' => NULL,
  'gold_coast' => NULL,
  'lincolnpark' => 
  array (
    0 => 'Building 1',
    1 => 'Building 2',
    2 => 'Building 3',
    3 => 'Building 4'
  ),
  'lakeview' => 
  array (
    0 => 'Building 1',
    1 => 'Building 2',
    2 => 'Building 3'
  ),
)

我希望基本上创建一个表,列出所有的建筑物,并在下一列中建筑物出现的次数。

这是我目前得到的,但它只显示所有的建筑。

$buildings = unserialize($row['buildings']);
$lincolnpark = $buildings['lincolnpark'];
$loyola= $buildings['loyola'];
$gold_coast = $buildings['gold_coast'];
$lakeview = $buildings['lakeview'];
foreach ($lakeview as $value)
{                       
    echo $value;
}
}

试试下面的代码。它将递归导航到数组中,并在每次出现构建时打印qtd。

<?php

$arr = array (
        'loyola' => NULL,
        'gold_coast' => NULL,
        'lincolnpark' =>
        array (
                0 => 'Building 1',
                1 => 'Building 2',
                2 => 'Building 3',
                3 => 'Building 4'
        ),
        'lakeview' =>
        array (
                0 => 'Building 1',
                1 => 'Building 2',
                2 => 'Building 3'
        ),
);
$ret = array();
countBuildings($arr);
foreach($ret as $key=>$value){
    echo "Building: $key ==> qtd : $value <br>";
}
function countBuildings($arr = array()){
    global $ret;
    foreach($arr as $value){
        if(is_array($value)){
            countBuildings($value);
        }else{
            if($value != NULL){
                if(isset($ret[$value])){
                    $ret[$value] += 1;
                }else{
                    $ret[$value] = 1;
                }
            }
        }
    }
}

分两次执行:一次用于计算在单独数组中的构建次数,另一次用于输出。