PHP COUNT_RECURSIVE рассчитывать только не значения массива? - PullRequest
1 голос
/ 25 сентября 2011

У меня есть многомерный массив на мелодию $doclist['area']['source'][#]['type']

Я хотел бы получить количество всех записей ['type'] = "title", которые не являются пустыми.

Есть ли простойспособ сделать это?

Пока я занимаюсь этим, есть ли способ получить количество всех записей в ['type'] = "title" И ['area'] = "something", которые не пусты?

Ответы [ 3 ]

2 голосов
/ 25 сентября 2011

Предполагая, что '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 голос
/ 25 сентября 2011

Вот функция, которую я написал на основе ответа 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;
        }
    }

Я думал, что кто-то может найти это полезным.

0 голосов
/ 11 апреля 2016
$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...