我有一个看起来像那样的数组
array( [0] => array( 'id' => 1,'title' => 'title 1',),[1] => array( 'id' => 10,'title' => 'title 10',[2] => array( 'id' => 11,'title' => 'title 11',[...] );
我想为所有子数组添加一个元素.这是我正在添加的相同元素.所以新数组看起来像:
array( [0] => array( 'id' => 1,'type' => 'bag',[...] );
有没有办法在不迭代第一个数组的情况下完成它?
这将是一个很大的阵容.我正在寻找最快的方法.
无论使用array_walk可能希望获得什么样的速度,都会因函数开销而丢失.由于您在注释中声明数组是db查询的结果,因此您可以通过将SELECT’bag’AS’type’添加到sql语句中,将bag值包含在结果集中.
原文链接:https://www.f2er.com/php/138636.html$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: ',"<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 */