我有一个如下数组数据:
$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',
)
)
)
最好的方法是什么?
答案 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的内部因此它将为您提供每个数组的大小