繁体   English   中英

从数组中提取相同的键并在新数组php中计算相同的值

[英]Extract same key from array and count same values in new array php

我有这个数组

Array
(
    [0] => Array
        (
            [status] => 15
            [orario] => 10:00
        )

    [1] => Array
        (
            [status] => 15
            [orario] => 11:00
        )

    [2] => Array
        (
            [status] => 15
            [orario] => 09:00
        )

    [3] => Array
        (
            [status] => 12
            [orario] => 09:00
        )

    [4] => Array
        (
            [status] => 12
            [orario] => 09:00
        )
    [5] => Array
        (
            [status] => 12
            [orario] => 10:00
        )

)

所以我想要一个新数组,其中我有类似状态的计数,在这种情况下,状态 = 12,我有 2 个状态为 12 和 orario = 09:00 的值,1 个状态为状态 = 12 和 orario = 10:00

Array
(
    09:00 => 2
    10:00 => 1
)

使用 array_column 我没有过滤器

$stat_orario = array_column($the_array, 'status', 'orario');
print_r($stat_orario);

所以我有总结果

Array
(
    09:00 => 3
    10:00 => 2
    11:00 => 1
)

您应该尝试以下代码:

$arr = array(
        array('status'=>15,'orario'=>'10:00'),
        array('status'=>15,'orario'=>'11:00'),
        array('status'=>15,'orario'=>'09:00'),
        array('status'=>12,'orario'=>'09:00'),
        array('status'=>12,'orario'=>'09:00'),
        array('status'=>12,'orario'=>'10:00')
    );

    $orario = array_count_values(array_column($arr, 'orario'));

输出是:

Array
(
    [10:00] => 2
    [11:00] => 1
    [09:00] => 3
)

这是我找到的解决方案,感谢 Forge Web Design

$arr = array(
        array('status'=>15,'orario'=>'10:00'),
        array('status'=>15,'orario'=>'11:00'),
        array('status'=>15,'orario'=>'09:00'),
        array('status'=>12,'orario'=>'09:00'),
        array('status'=>12,'orario'=>'09:00'),
        array('status'=>12,'orario'=>'10:00')
    );

// I transform the array with only status = 12, but I have to do this for every status I want to extract values

foreach ($arr as $key => $val) {
    if ($arr[$key]['status'] == '12')
        $status_12[$key] = $val;
}
    $orario = array_count_values(array_column($arr, 'orario'));

现在输出只有状态 = 12

Array
(
    [10:00] => 1
    [09:00] => 2
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM