我的问题是,我有一个2D Array
,我希望override
设置的元素的值。
我的代码如下:
$indes="-1";
$inupccode="-1";
$inuomcode="-1";
$instdpack="-1";
$inweight="-1";
$inlength="-1";
$inwidth="-1";
$inheight="-1";
$inunitprice="-1";
$infamcode="-1";
$basicInfo = array(array($indes,"prdes1_35", $inupccode,
"prupc#_2", $inuomcode,"prwuts_3-1",
$instdpack,"prwuns_12", $inweight,
"prgrwt_11", $inlength,"prlong_7",
$inwidth,"prwide_7", $inheight,"prhigh_7",
$inunitprice,"prprce_12", $infamcode,"proga2"));
echo "before";
print_r($basicInfo);
foreach($basicInfo as $value){
foreach ($value as $id){
if($id == "prdes1_35"){
$value = 2;
}
}
}
echo "after";
print_r($basicInfo);
在$indes
的值代码中,我想从-1 to 2
更改,并且提醒数组值必须保留为“-1
”。我怎样才能做到这一点?
答案 0 :(得分:0)
最大的问题首先:我不认为你的代码符合你的意图。你确定你理解(多维)数组吗?
另一个问题是您尝试更改$value
的方式。请查看这篇文章:
(https://stackoverflow.com/questions/15024616/php-foreach-change-original-array-values)
有关如何更改使用foreach运行的数组的信息。
最简单的解决方案是:
foreach($basicInfo as &$value){
foreach ($value as $id){
if($id == "prdes1_35"){
$value = 2;
}
}
}
在$ value变量之前注意&符号(&)。引用的帖子中的链接包含了解其含义所必需的所有解释。
Perfomancewise这将是最好的解决方案,特别是当您的阵列变大时:
foreach($basicInfo as $key => $value){
foreach ($value as $id){
if($id == "prdes1_35"){
$basicInfo[$key][$value] = 2;
}
}
}
注意:我没有改变你的代码逻辑(我认为这是坏的)。我刚刚演示了如何在使用foreach迭代数组时更改值。