gpt4 book ai didi

Php:数组嵌套循环性能

转载 作者:搜寻专家 更新时间:2023-10-31 21:27:03 24 4
gpt4 key购买 nike

我有两个数组

$list = Array
([0] => stdClass Object
(
[id] => 10
[data] => "test data"
)
[1] => stdClass Object
...
...(max 3000 ~ 4000 items)

$attributes = Array
([0] => stdClass Object
(
[ids] => 11
[list] => '<ul>...</ul>'
)
[1] => stdClass Object
...
...(max 3000 ~ 4000 items)

我正试图加入他们,但我能写的唯一表现方式是可用

$nrrowslist = count($list);
for ($i = 0; $i < $nrrowslist; $i++){
$nrat = count($attributes);
for ($j = 0; $j < $nrat; $j++)
{
if($list[$i]->id == $attributes[$j]->ids){
$list[$i]->attributes = $attributes[$j]->list;
array_splice($attributes, $j, 1); // remove the item
break; // since there is other item with that id
}
}
}

//在~0.470 秒内完成

但是如果我写的话

foreach($list as $art){
foreach($attributes as $attr){
if($art->id == $attr->ids){
$art->attributes = $attr->list;
}
}
}

它在 ~ 5.500 秒内完成......而且太多了

我可以做些什么来执行更多的第一种方法情况?

最佳答案

通过两次迭代并在作业中使用公共(public)参数,您可能会取得一些成功

$newlist = array();

// I'm sure there's a better way to do this initial assignment
foreach($list as $row)
{
$newlist[$row->id] = $row;
}

foreach($attributes as $attr)
{
if(isset($newlist[$attr->ids]) === true)
{
$newlist[$attr->ids]->attributes = $attr->list;
}
}

var_dump($newlist);

关于Php:数组嵌套循环性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34471273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com