PHP 向多维数组的每个子数组添加元素 [英] PHP Add element to every sub array of multi dimension array
问题描述
我有一个看起来像这样的数组
I have an array that looks something like that
array(
[0] => array(
'id' => 1,
'title' => 'title 1',
),
[1] => array(
'id' => 10,
'title' => 'title 10',
),
[2] => array(
'id' => 11,
'title' => 'title 11',
),
[...]
);
我想向所有子数组添加一个元素.这与我要添加的元素相同.所以新数组看起来像:
I want to add an element to all the sub array. It's the same element i'm adding. so the new array will look like :
array(
[0] => array(
'id' => 1,
'title' => 'title 1',
'type' => 'bag',
),
[1] => array(
'id' => 10,
'title' => 'title 10',
'type' => 'bag',
),
[2] => array(
'id' => 11,
'title' => 'title 11',
'type' => 'bag',
),
[...]
);
有没有办法在第一个数组上不迭代?这将是一个大阵列.我正在寻找最快的方法.
Is there a way to do it without iterating on the the first array?
It's gonna be a big array. I'm looking for the fastest way to do it.
推荐答案
无论人们希望通过使用 array_walk 获得什么速度,都会因函数开销而丢失.由于您在评论中指出该数组是 db 查询的结果,您可以通过添加 SELECT 'bag 简单地在结果集中包含
到您的 SQL 语句.bag
值' AS 'type'
Whatever speed one might hope to gain by using array_walk, is lost with function overhead. Since you stated in your comments that the array is a result of a db query, you can simply include the bag
value in your result set by adding SELECT 'bag' AS 'type'
to your SQL statement.
$start = 0; $end = 0;
$orig = array(
array('id' => 1, 'title' => 'title 1'),
array('id' => 10, 'title' => 'title 10'),
array('id' => 11, 'title' => 'title 11')
);
// A
$start = microtime(true);
for ($a=0; $a<1000; $a++) {
$els1 = $orig;
array_walk($els1, function(&$val, $key){$val['type'] = 'bag';});
}
$end = microtime(true);
echo 'A: ', $end - $start, "<br />\n";
// B
$start = microtime(true);
for ($b=0; $b<1000; $b++) {
$els2 = $orig;
foreach ($els2 as &$el) {
$el['type'] = 'bag';
}
unset($el);
}
$end = microtime(true);
echo 'B: ', $end - $start, "<br />\n";
/* output:
A: 0.0076138973236084
B: 0.0047528743743896
A: 0.0075309276580811
B: 0.0045361518859863
A: 0.0075531005859375
B: 0.062379837036133
A: 0.0075340270996094
B: 0.0044951438903809
A: 0.0074868202209473
B: 0.0044751167297363
A: 0.0076088905334473
B: 0.0048189163208008
*/
这篇关于PHP 向多维数组的每个子数组添加元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!