对于一个游戏,我有一组"房子",每个房子都属于一个"城市"。我想根据这个城市来分离这个集合(它是一个数组(,这样每个城市都会有自己的房子数组。我没有发现内置的数组函数可以做到这一点(比如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",
}, ...
}
这样做正确吗?有什么内置函数或更好的算法吗?
在不循环的情况下处理结构非常困难。也许你可以这样简化它。。
$new_arr = array();
foreach($arr as $arr1)
{
$new_arr[$arr1['id']] = array_slice($arr1,1);
}
print_r($new_arr);
演示
尽管这可以使用数组函数实现,但与foreach
相比,性能不会那么好