php - 用 PHP 中更高效的方法替换嵌套的 foreach 循环
问题描述
我有两个数组,每个数组都有不同的结构:
$websites = Array (
[1131] => Array (
[httpcode] => 403
[user_id] => 265
)
[1130] => Array (
[httpcode] => 403
[user_id] => 265
)
)
$responses = Array (
[1131] => 200
[1130] => 500
)
我正在使用嵌套的 foreach 循环将数组中的 替换为httpcode
数组中$websites
相应的 new :httpcode
$responses
foreach ($websites as $site_id => &$details) {
foreach ($responses as $resp_id => $new_http) {
if ($site_id == $resp_id) {
$details['httpcode'] = $new_http;
}
}
}
这成功了,我得到了正确的结果:
$websites = Array (
[1131] => Array (
[httpcode] => 200
[user_id] => 265
)
[1130] => Array (
[httpcode] => 500
[user_id] => 265
)
)
但是,我知道嵌套的 foreach 循环在 CPU 周期中的成本很高,我想知道对于大型阵列是否有更有效的方法来最小化服务器上的 CPU 使用。
解决方案
第二个循环完全没有意义。这就足够了:
foreach ($websites as $site_id => &$details) {
$details['httpcode'] = $responses[$site_id];
}
如果两个数组可能不同步,您需要添加额外的密钥检查:
foreach ($websites as $site_id => &$details) {
if (array_key_exists($site_id, $responses)) {
$details['httpcode'] = $responses[$site_id];
}
}
推荐阅读
- javascript - 如何将数据从我的 main.js 发送到我的 index.html(电子)
- javascript - 这个正则表达式代码是如何工作的(积极的前瞻)?
- git - 使用来自 Jenkins 的凭据在 shell 脚本中进行 git clone
- django - 类型对象 'MODEL' 没有属性 'USERNAME_FIELD'
- node.js - 为什么在我尝试安装 Node.js 时会出现此消息?
- r - 安装后无法加载 kableExtra
- javascript - 插入空白 console.log() 调用时行为发生变化
- lua - 这段代码是如何工作的?有人说这是一个解决方案
- css - 如何在 JSON 中将 div 放在 div 下?
- html - 静态图像背景和滚动内容 css