php,foreach(for)循环中具有多值的键的总计数

时间:2017-09-14 18:40:28

标签: php api for-loop count

从REST api,我使用

将json数据转换为数组数据
$return= json_decode($response, true);

每个数组中有相同键的2个值,例如:

['some1']=>array(
   [0]=> array(['data']=>0)
   [1]=> array(['data']=>1)
)

.. 我做了一个for循环来显示结果为0或1的['data']的值。现在我想计算整个数组中['data']的总数0或1。我怎么能这样做?
这是我的for循环看起来像:

for ($i = 0; $i < count($return['some1']); $i++){
    echo  $return['some1'][$i]['data'] ."<br/>" ;}
回声显示:

0
1

谢谢,

3 个答案:

答案 0 :(得分:1)

$count_0 = 0;
$count_1 = 0;
for ($i = 0; $i < count($return['some1']); $i++){
    if ($return['some1'][$i]['data'] == 0) {
        $count_0++;
    }
    if ($return['some1'][$i]['data'] == 1) {
        $count_1++;
    }
}
echo $count_0;
echo '<br/>';
echo $count_1;

答案 1 :(得分:1)

只需提取data列并计算值即可。键将包含值(0或1),值将包含计数:

$counts = array_count_values(array_column($return['some1'], 'data'));
echo $counts[0]; // return the count of 0s
echo $counts[1]; // return the count of 1s

如果你有2个,那么$counts[2]将包含它们的计数等......

答案 2 :(得分:0)

如果您想知道“数据”的每个值重复多少次,您可以使用以下内容来跟踪:

// Your input data
$data = array(
    'some1' => array(
        array('data' => 0),
        array('data' => 1),
        array('data' => 1),
        array('data' => 1),
        array('data' => 0)
    )
);

// Store the result
$result_array = array();

// Count each unique value for 'data'
foreach ($data['some1'] as $key => $value) {
    if ( ! isset($result_array[$value['data']])) {
        $result_array[$value['data']] = 0;
    }
    $result_array[$value['data']]++;
}

// Display unqiue results & their respective counts
print_r($result_array);

示例:https://eval.in/862097