拥有这个“漂亮的”多维数组:
array
0 =>
array
0 =>
object(SimpleXMLElement)
public 'name' => string 'some name'
public 'model' => string 'some model'
1 =>
object(SimpleXMLElement)
public 'name' => string 'some name'
public 'model' => string 'some model'
1 =>
array
0 =>
object(SimpleXMLElement)
public 'name' => string 'some name'
public 'model' => string 'some model'
1 =>
object(SimpleXMLElement)
public 'name' => string 'some name'
public 'model' => string 'some model'
and so on
我删除了中间数组以获得一个带循环(并将对象转换为数组):
foreach ($items as $x) {
foreach ($x as $y) {
$item[] = (array) $y;
}
}
结果是:
array
0 =>
array
'name' => string 'some name'
'model' => string 'some model'
1 =>
array
'name' => string 'some name'
'model' => string 'some model'
2 => ...
3 => ...
etc.
它完成了工作(在其中创建了包含4个数组的数组),但我想知道什么是更干净的方法呢?是的,循环1000+阵列绝对不是最好的主意。我不是在寻找确切的代码,只是想法。
答案 0 :(得分:3)
foreach ($items as $x) {
foreach ($x as $y) {
$item[] = (array) $y;
}
}
你拥有的解决方案是最好的,因为如果你使用array_merge()
,你就不会有冲突的密钥,时间复杂度是O(n)
,这是非常好的。
答案 1 :(得分:1)
可能不是更好或更快(未经测试),而是替代:
$result = array_map('get_object_vars', call_user_func_array('array_merge', $items));
或者:
foreach(call_user_func_array('array_merge', $items) as $o) {
$result[] = (array)$o;
}