PHP的快速方式;foreach“;多维关联数组的循环
我有两个多维数组,分别称为PHP的快速方式;foreach“;多维关联数组的循环,php,multidimensional-array,foreach,associative-array,Php,Multidimensional Array,Foreach,Associative Array,我有两个多维数组,分别称为$arrInitial和$arrFinal,我必须遍历每一个数组,以便用数组中列的值填充$arrFinal中的初始值列$arrInitial我拥有相同的国家和日期 我的foreach可以工作,但在我的用例中,这两个数组有数十万个值,这样代码运行太慢 有没有更快的方法 $arrInitial=array(array("Date"=>"01.05.2021", "Country"=>"USA&
$arrInitial
和$arrFinal
,我必须遍历每一个数组,以便用数组中列的值填充$arrFinal
中的初始值列$arrInitial
我拥有相同的国家和日期
我的foreach
可以工作,但在我的用例中,这两个数组有数十万个值,这样代码运行太慢
有没有更快的方法
$arrInitial=array(array("Date"=>"01.05.2021", "Country"=>"USA","Initial_Am"=>25.5),
array("Date"=>"02.05.2021", "Country"=>"USA","Initial_Am"=>30),
array("Date"=>"01.05.2021", "Country"=>"UK","Initial_Am"=>10),
array("Date"=>"02.05.2021", "Country"=>"UK","Initial_Am"=>15)
);
$arrFinal=array(array("Date"=>"01.05.2021", "Country"=>"USA","Initial_Am"=>null,"Final_Am"=>30.5),
array("Date"=>"02.05.2021", "Country"=>"USA","Initial_Am"=>null,"Final_Am"=>20),
array("Date"=>"01.05.2021", "Country"=>"UK","Initial_Am"=>null,"Final_Am"=>25),
array("Date"=>"02.05.2021", "Country"=>"UK","Initial_Am"=>null,"Final_Am"=>12),
array("Date"=>"01.05.2021", "Country"=>"FR","Initial_Am"=>null,"Final_Am"=>18)
);
foreach($arrFinal as $keyFin => $valueFin){
foreach($arrInitial as $keyIni => $valueIni){
if($valueIni['Date']==$valueFin['Date'] && $valueIni['Country']==$valueFin['Country']){
$arrFinal[$keyFin]['Initial_Am']=$valueIni['Initial_Am'];
}
}
}
在foreach
循环之后,数组$arrFinal
将如下所示:
$arrFinal=array(array("Date"=>"01.05.2021", "Country"=>"USA","Initial_Am"=>25.5,"Final_Am"=>30.5),
array("Date"=>"02.05.2021", "Country"=>"USA","Initial_Am"=>30,"Final_Am"=>20),
array("Date"=>"01.05.2021", "Country"=>"UK","Initial_Am"=>10,"Final_Am"=>25),
array("Date"=>"02.05.2021", "Country"=>"UK","Initial_Am"=>15,"Final_Am"=>12),
array("Date"=>"01.05.2021", "Country"=>"FR","Initial_Am"=>null,"Final_Am"=>18)
);
国家/地区+日期组合是否唯一?如果是这样的话,我会首先修改初始数组,这样它就可以使用这个组合作为数组键,然后您可以直接使用它进行“查找”,而不必每次都自己循环整个数组。(通过密钥直接访问通常比自己显式循环数据更快。)@CBroe是的,它是唯一的,但我认为不会有太大的区别。有没有办法只使用一个foreach
?CBroe是100%正确的。这是在查找中建议“临时组合键”的页面的副本。例如,我看到了对这个问题的重新投票,好像在说,您没有看到所需的技术是如何以多种方式演示的。Spoonfeed:您使用的是不推荐的、不安全的、不受支持的php版本。如果你的雇主不允许你使用现代php,告诉他们你会在其他地方找到更好的工作。。。将方括号语法更改为旧的skool数组(
…)
语法。