我有一个多维数组,调整为$doclist['area']['source'][#]['type']
我想获得一些非空的['type'] = "title"
条目。
有一种简单的方法吗?
虽然我参与其中,是否有办法让['type'] = "title"
和['area'] = "something"
的所有条目都不为空?
答案 0 :(得分:2)
假设'area'
和'source'
表示任意字符串,您可以像这样嵌套几个循环:
$num_titles = 0;
foreach ($doclist as $area => $arr1) {
foreach ($arr1 as $source => $arr2) {
foreach ($arr2 as $k => $arr3) {
if (isset($arr3['title']) && strlen(trim($arr3['title'])))
$num_titles++;
}
}
}
print "Titles: {$num_titles}\n";
print "Areas: " . sizeof($doclist) . "\n";
答案 1 :(得分:1)
这是我根据rfausak的回应编写的函数:
function countdocs($arr,$x="",$y="") {
if (($x) && ($y)) {
return count($arr[$x][$y]);
} else if ($x) {
$r=0;
foreach ($arr[$x] as $arr1) {
$r+=count($arr1);
}
return $r;
} else {
$r=0;
foreach ($arr as $arr1) {
foreach ($arr1 as $arr2) {
$r+=count($arr2);
}
}
return $r;
}
}
我认为有人可能觉得它很有用。
答案 2 :(得分:0)
$ships = array(
"Passenger ship" =>
array("Yacht", "Liner", "Ferry"),
"War ship" =>
array("Battle-wagon", "Submarine", "Cruiser"),
"Freight ship" =>
array("Tank vessel", "Dry-cargo ship", "Container
cargo ship")
);
function myCount($var, $i = 0){
$cnt = 0;
foreach ($var as $v) {
if (is_array($v) and $i)
$cnt += myCount($v, 0);
$cnt++;
}
return $cnt;
}
echo myCount($ships, 1);