按字段拆分/分组数组元素

时间:2014-05-01 07:02:16

标签: php arrays split grouping

对于一款游戏,我有一系列的房子'每个房子属于一个城市'。我想基于这个城市将这个集合(它是一个阵列)分开,所以每个城市都有自己的房屋阵列。我发现没有内置的数组函数来执行此操作(例如array_split进行回调),那么我该如何做呢?

我想迭代遍历数组的每个元素,但这似乎非常慢。房子已经全部按城市ID排序,所以如果我得到城市id改变的确切位置,我可以使用一些拆分功能。

数组中的房屋存储如下:

array(3) {
    ["id"]=> string(1) "1",
    ["name"]=> string(13) "Example House",
    ["city_id"]=> string(1) "1",
}

城市只是代表他们的数字,而不是另一个对象。

我希望结果如下:

array(n) {
    [1]=> array(o) {
        ["id"]=> string(1) "1",
        ["name"]=> string(13) "Example House",
    }, ...
}

这样做是否正确?是否有内置函数或更好的算法?

1 个答案:

答案 0 :(得分:1)

在没有循环的情况下很难在你的结构上工作..也许你可以像这样简化它..

$new_arr = array();
foreach($arr as $arr1)
{
    $new_arr[$arr1['id']] = array_slice($arr1,1);
}
print_r($new_arr);

Demonstration

尽管可以使用数组函数实现这一点,但与foreach

相比,性能不会那么好