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

PHP多维数组:用两个值的串联替换所有键

发布时间:2020-12-13 18:01:19 所属栏目:PHP教程 来源:网络整理
导读:我在 PHP中有一个多维数组,其中外部数组包含数千个项目,其中每个项目都是一个数组本身,其值为“key1”,“key2”和“count”: myExistingArray (size=99999 VERY BIG) public 0 = array (size=3) 'key1' = string '15504' 'key2' = string '20' 'count' = st
我在 PHP中有一个多维数组,其中外部数组包含数千个项目,其中每个项目都是一个数组本身,其值为“key1”,“key2”和“count”:
myExistingArray (size=99999 VERY BIG)
      public 0 => 
        array (size=3)
          'key1' => string '15504' 
          'key2' => string '20'
          'count' => string '1'
      public 1 => 
        array (size=3)
          'key1' => string '15508' (length=5)
          'key2' => string '20' (length=2)
          'count' => string '2' (length=1)
      public 2 => 
        array (size=3)
          'key1' => string '15510' (length=5)
          'key2' => string '20' (length=2)
          'count' => string '5' (length=1)
....many more similar items

我想将它转换为一个非常简单的数组,其中来自“key1”和“key”的前值被连接成一个新的键,指向相应的“count”值,如下所示:

myNewArray (size=99999 VERY BIG)
      <key1>_<key2> => <count>
      15504_20 => string '1' (length=1)
      15508_20 => string '2' (length=1)
      15510_20 => string '5' (length=1)

性能对我来说非常重要,因为外部阵列有几千个项目. PHP中有快速方法吗?我得到的唯一的东西是一个简单的迭代,但这对我来说似乎很慢:

// works but I am looking for a faster version
$myNewArray = array();
foreach ($myExistingArray as $item) {
  $myNewArray [$item["key1"]."_".$item["key1"]]=$item["count"];
}

编辑/基础问题

有些人正确地补充说我当前的解决方案已经在O(n)中并且提到PHP中没有内置函数来加速这个.

我从mysql数据库查询中获取“myExistingArray”.我基本上有工作对象,并希望按状态和event_id对它们进行分组.查询与此类似:

select count(job.id) as count,job.status as key1,job.event_id as key2
from job
group by job.status,job.event_id

我想重新排列密钥,以便稍后我可以轻松访问具有特定状态的特定事件的作业计数.

通常,您正在寻找 array_walkarray_map函数来转换PHP中的数组,但不幸的是它们都不能改变您想要转换的数组的键. array_walk将保留密钥,但不会改变它们.可悲的是,不,没有内置的功能来做你所要求的.

(编辑:李大同)

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

    推荐文章
      热点阅读