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

标签 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(
        '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”的值可以是任何自然数,因此我需要的并不总是三个结果数组。

我找到了一个相关的问题(和答案)here ,但我的问题很具体,因为我事先不知道“b”有哪些原始值,以及有多少个不同的值。

有什么想法吗?

(编辑:$arr3 写成 $arr1)

最佳答案

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

关于PHP - 根据字段值划分多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10790009/

相关文章:

python - 合并二维数组

c - C中的二维数组初始化

php - 允许使用 htmlpurifier 为元素添加自定义属性

javascript - 如何在 href 标签中同时使用弹出窗口和操作

c++ - OpenGL实例化数组奇怪的顶点位置

javascript - 使用准备好的语句插入多行

php - friend 系统php和mysql查询?

php - cakephp 3 根据用户角色显示html

c - 如何将数组作为地址发送到函数

algorithm - 将二维数组旋转 90 度