php - 在多维数组的第二个数组中按键的count()

时间:2011-10-10 20:47:50

标签: php multidimensional-array

我有以下数组

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

现在我要计算所有$ _POST [x] [type]。怎么做?

如果我会反转多维数组,它会起作用我想这样:)

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

我如何计算原始结构中的“类型”?

5 个答案:

答案 0 :(得分:5)

$type_count = 0;
foreach($arr as $v) {
    if(array_key_exists('type', $v)) $type_count++;
}

答案 1 :(得分:2)

在您的情况下,这有效:

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

echo count($count['name']); # 2

答案 2 :(得分:0)

$count = 0;
foreach ($_POST as $value) {
   if (isset($value['type']) {
      $count++;
   }
}

答案 3 :(得分:0)

PHP5.3风格

$count = array_reduce (
    $_POST,
    function ($sum, $current) {
        return $sum + ((int) array_key_exists('type', $current));
    },
    0
);

答案 4 :(得分:0)

使用set操作:

$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]);}));