基于子数组值拆分PHP数组

基于子数组值拆分PHP数组,php,Php,是否有一个PHP函数或其他解决方案可以帮助根据子数组中的值拆分数组 是的,我知道我可以通过循环来完成问题是,是否有其他方法可以在不进行循环的情况下完成此操作 示例: 使用Active的值,将此数组 $array_all => Array ( [126] => Array ( [DisplayName] => Customer ABC [Active] => 1 ) [1596

是否有一个PHP函数或其他解决方案可以帮助根据子数组中的值拆分数组

是的,我知道我可以通过循环来完成问题是,是否有其他方法可以在不进行循环的情况下完成此操作

示例:

使用Active的值,将此数组

$array_all => Array
(
    [126] => Array
        (
            [DisplayName] => Customer ABC
            [Active] => 1
        )

    [1596] => Array
        (
            [DisplayName] => Customer 123
            [Active] => 0
        )

    [1648] => Array
        (
            [DisplayName] => John Q Sample
            [Active] => 1
        )

    [1649] => Array
        (
            [DisplayName] => Fry & Leela, Inc.
            [Active] => 0
        )

    [1571] => Array
        (
            [DisplayName] => Class Action: Redshirts vs. UFP 
            [Active] => 1
        )
)
$array_active => Array
(
    [126] => Array
        (
            [DisplayName] => Customer ABC
            [Active] => 1
        )

    [1648] => Array
        (
            [DisplayName] => John Q Sample
            [Active] => 1
        )

    [1571] => Array
        (
            [DisplayName] => Class Action: Redshirts vs. UFP 
            [Active] => 1
        )
)
…进入这个数组

$array_all => Array
(
    [126] => Array
        (
            [DisplayName] => Customer ABC
            [Active] => 1
        )

    [1596] => Array
        (
            [DisplayName] => Customer 123
            [Active] => 0
        )

    [1648] => Array
        (
            [DisplayName] => John Q Sample
            [Active] => 1
        )

    [1649] => Array
        (
            [DisplayName] => Fry & Leela, Inc.
            [Active] => 0
        )

    [1571] => Array
        (
            [DisplayName] => Class Action: Redshirts vs. UFP 
            [Active] => 1
        )
)
$array_active => Array
(
    [126] => Array
        (
            [DisplayName] => Customer ABC
            [Active] => 1
        )

    [1648] => Array
        (
            [DisplayName] => John Q Sample
            [Active] => 1
        )

    [1571] => Array
        (
            [DisplayName] => Class Action: Redshirts vs. UFP 
            [Active] => 1
        )
)
。。。还有这个数组

$array_inactive => Array
(

    [1596] => Array
        (
            [DisplayName] => Customer 123
            [Active] => 0
        )

    [1649] => Array
        (
            [DisplayName] => Fry & Leela, Inc.
            [Active] => 0
        )

)
您可以使用:

您也可以使用它作为替代,但它会返回索引数组,因此在不使用原始键的情况下:

list($actives, $notActives) = array_reduce($array_all, function ($result, $row) {
    $result[$row["Active"]][] = $row;
    return $result;
}, [[],[]]);
使用
array\u reduce
同时维护密钥时,会变得非常冗长:

list($actives, $notActives) = array_reduce(array_keys($array_all), 
    function ($result, $key) use ($array_all) {
        $result[$array_all[$key]["Active"]][$key] = $array_all[$key];
        return $result;
    }, [[],[]]
);
您可以使用:

您也可以使用它作为替代,但它会返回索引数组,因此在不使用原始键的情况下:

list($actives, $notActives) = array_reduce($array_all, function ($result, $row) {
    $result[$row["Active"]][] = $row;
    return $result;
}, [[],[]]);
使用
array\u reduce
同时维护密钥时,会变得非常冗长:

list($actives, $notActives) = array_reduce(array_keys($array_all), 
    function ($result, $key) use ($array_all) {
        $result[$array_all[$key]["Active"]][$key] = $array_all[$key];
        return $result;
    }, [[],[]]
);

array\u filter
array\u reduce
?无论如何都会有循环。为什么每个人都要求使用“无外循环”@Dagon?因为有时候不必循环数据是件好事。因此,语言功能。例如,您可以循环遍历一个字符串和每个字符的大写字母,但这是一项常见任务,因此PHP提供strtoupper()。是的,有循环,但我不必每次都处理大写字符串。array_filter也一样——这是我当前项目中的一项常见任务,我想知道在我自己构建它之前,PHP是否已经内置了它。虽然我有点不好意思没有想到array_filter(),这是我想做的事情的名字…
array_filter
array_reduce
?无论如何都会有循环。为什么每个人都要求使用“无外循环”@Dagon?因为有时候不必循环数据是件好事。因此,语言功能。例如,您可以循环遍历一个字符串和每个字符的大写字母,但这是一项常见任务,因此PHP提供strtoupper()。是的,有循环,但我不必每次都处理大写字符串。array_filter也一样——这是我当前项目中的一项常见任务,我想知道在我自己构建它之前,PHP是否已经内置了它。虽然我有点不好意思没有想到数组_filter(),这是我想做的事情的名字。。。