在PHP中计算数组内部的值

时间:2016-06-15 07:31:27

标签: php arrays

我有一个如下数组数据:

$data =array(
'6' => array(
    '00:01' => array(
        'area1' => array(
            '0' => array(),
            '1' => array(),
            '2' => array(),
            ),
        'area2' => array(
            '0' => array(),
            '1' => array(),
            '2' => array(),
            )
         )
      )
  )

现在我想计算区域键内的数字元素。输出应为:

$data = array(
'6' => array(
    '00:01' => array(
        'area1'=> '3',
        'area2'=> '3',
    )
  )
)

最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。但这个想法总是一样的。你需要迭代这个数组。这就是全部。

以下是基于array_map功能

的示例
$counts = array_map(function($item) {
    return array_map(function($hour) {
        return array_map(function($area) {
            return count($area);
        }, $hour);  
    }, $item);
}, $data);

$counts内容为:

array(1) {
  [6]=>
  array(1) {
    ["00:01"]=>
    array(2) {
      ["area1"]=>
      int(3)
      ["area2"]=>
      int(3)
    }
  }
} 

您也可以使用foreach循环执行此操作。

答案 1 :(得分:1)

好吧,你可以简单地迭代它,就像这样:

<select name="item" id="datetime"  onchange="updateText(this.value)"  autofocus required>';
for ($i=0; $i < $ctr; $i++) { 
    echo '  <option value="'.$itemid[$i].'">'.$item_name[$i].' '.$brand[$i].' </option>';
}

echo '</select><p id="adv1"> </p>';

返回

<?php $data =array(
'6' => array(
    '00:01' => array(
        'area1' => array(
            '0' => array(),
            '1' => array(),
            '2' => array(),
            ),
        'area2' => array(
            '0' => array(),
            '1' => array(),
            '2' => array(),
            )
         )
      )
  );

foreach( $data as $key => $array )
{
    foreach( $array as $time => $areas )
    {
        foreach( $areas as $index => $area )
        {
            $data[$key][$time][$index] = count( $area );
        }

    }
}

var_dump( $data );

基本上,所有解决方案都使用相同的方法:迭代!

答案 2 :(得分:0)

使用sizeof()函数来获取大小...对于动态数组用户foreach()函数和使用foreach的内部因此它将为您提供每个数组的大小