加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读