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

Php 从数组中提取相同的键,并在新数组中计算相同的值,php,arrays,Php,Arrays,我有这个数组 Array ( [0] => Array ( [status] => 15 [orario] => 10:00 ) [1] => Array ( [status] => 15 [orario] => 11:00 ) [2] => Array

我有这个数组

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,我有两个状态为12且orario=09:00的值,一个状态为12且orario=10:00的值

Array
(
    09:00 => 2
    10:00 => 1
)
对于数组_列,我没有过滤器

$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
)

您应该尝试以下代码:

$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
)

这是我找到的解决方案,感谢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
)

+请添加一些您为尝试回答您自己的问题而编写的代码。您好,谢谢,但是我如何才能只筛选一些[状态]。如果我使用数组\列,我没有过滤器。@geeves我有一个循环来填充其他函数的数组。所以我不想改变循环,因为我需要一些值请添加一些您为尝试回答您自己的问题而编写的代码。您好,谢谢,但是我如何才能只筛选一些[状态]。如果我使用数组\列,我没有过滤器。@geeves我有一个循环来填充其他函数的数组。所以我不想改变循环,因为我需要一些.Hi之后的值,但是我想只使用status=12Hi进行过滤,但是我想只使用status=12进行过滤