PHP将元素添加到多维数组的每个子数组
发布时间:2020-12-13 13:46:24 所属栏目:PHP教程 来源:网络整理
导读:我有一个看起来像那样的数组 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,'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值包含在结果集中.
$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 */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |