Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-根据字段划分多维数组';s值_Php_Arrays_Multidimensional Array_Split - Fatal编程技术网

PHP-根据字段划分多维数组';s值

PHP-根据字段划分多维数组';s值,php,arrays,multidimensional-array,split,Php,Arrays,Multidimensional Array,Split,我有一个初始数组: $arr0 = array( 0 => array( 'a' => 1, 'b' => 1 ) 1 => array( 'a' => 2, 'b' => 1 ) 2 => array( 'a' => 3, 'b' => 2 ) 3 => array(

我有一个初始数组:

$arr0 = array(
    0 => array(
        'a' => 1,
        'b' => 1
    )
    1 => array(
        'a' => 2,
        'b' => 1
    )
    2 => array(
        'a' => 3,
        'b' => 2
    )
    3 => array(
        'a' => 4,
        'b' => 3
    )
    4 => array(
        'a' => 5,
        'b' => 3
    )
);
我希望根据字段“b”的成员值将其划分为单独的数组,如下所示:

// $arr1 contains $arr0[0] and $arr0[1] because their value of 'b' is 1.
$arr1 = array(
    0 => array(
        'a' => 1,
        'b' => 1
    )
    1 => array(
        'a' => 2,
        'b' => 1
    )
);

// $arr2 contains $arr0[2] because its value of 'b' is 2.
$arr2 = array(
    0 => array(
        'a' => 3,
        'b' => 2
    )
);

// $arr3 contains $arr0[3] and $arr0[4] because their value of 'b' is 3.
$arr3 = array(
    0 => array(
        'a' => 4,
        'b' => 3
    )
    1 => array(
        'a' => 5,
        'b' => 3
    )
);
现在,字段“b”可以有任何自然数作为值,因此我需要的结果数组并不总是三个

我发现了一个相关的问题(和答案),但我的问题是具体的,因为我事先不知道“b”有什么原始值,以及有多少不同的值

有什么想法吗

(编辑:$arr3写为$arr1)

第二行有魔力,它动态地构建了一个变量名。然而,这种编程方式确实很笨拙;最好将结果放入另一个数组中,如下所示:

foreach ($arr0 as $value) {
  $allarr[$value['b']][] = $value;
}
// $allarr is defined

foreach
,没有任何内置的功能。数组是如何构造的?您最好更改它。我的数组是数据库查询的结果,$arr[0]、$arr[1]等是表行。字段“a”和“b”分别是数据库字段“内容类型”和“内容单元”。我需要回显第三个DB字段的值,这取决于它是否属于指定的类型和指定的单元,还需要回显仅属于指定类型的所有内容,以及仅属于指定单元的所有内容。哇!我现在觉得自己很愚蠢:)谢谢,这很有效。另外,感谢您对结果数组的建议,我没有想到这一点。
foreach ($arr0 as $value) {
  ${"arr" . $value['b']}[] = $value;
}
// $arr1, $arr2 and $arr3 are defined
foreach ($arr0 as $value) {
  $allarr[$value['b']][] = $value;
}
// $allarr is defined