php - count () по ключу во втором массиве многомерного массива - PullRequest
1 голос
/ 11 октября 2011

У меня есть следующий массив

$_POST[0][name]
$_POST[0][type]
$_POST[0][planet]
...
$_POST[1][name]
$_POST[1][type]
$_POST[1][planet]

Теперь я хочу посчитать все $ _POST [x] [тип]. Как это сделать?

( Если бы я развернул многомерный массив, он бы работал, я думаю, так:)

$count = count($_POST['type']);

как я могу посчитать "тип" в исходной структуре?

Ответы [ 5 ]

5 голосов
/ 11 октября 2011
$type_count = 0;
foreach($arr as $v) {
    if(array_key_exists('type', $v)) $type_count++;
}
2 голосов
/ 11 октября 2011

В вашем случае это работает:

$count = call_user_func_array('array_merge_recursive', $_POST);

echo count($count['name']); # 2
0 голосов
/ 11 октября 2011

И используя операции над множествами:

$key = 'type';
$tmp = array_map($_POST, function($val) use ($key) {return isset($val[$key]);});
$count = array_reduce($tmp, function($a, $b) { return $a + $b; }, 0);

Таким образом, вы можете уменьшить это до значения array_filter:

$key = 'type';
$count = count(array_filter($_POST, function($val) use ($key) { return isset($val[$key]);}));
0 голосов
/ 11 октября 2011

PHP5.3 стиль

$count = array_reduce (
    $_POST,
    function ($sum, $current) {
        return $sum + ((int) array_key_exists('type', $current));
    },
    0
);
0 голосов
/ 11 октября 2011
$count = 0;
foreach ($_POST as $value) {
   if (isset($value['type']) {
      $count++;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...