2016-01-18 64 views
0

我的问题是,我有一个2D Array,我想要override设置的元素的值。访问和覆盖2d数组值

我的代码如下:

$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); 

在用于我想从-1 to 2和提醒阵列值更改必须保持为“-1”的$indes值的代码。我怎样才能做到这一点?

回答

0

最大的问题首先:我不认为你的代码做你想做的。你确定你理解(多维)数组吗?

另一个问题是您尝试更改$value的方式。关于如何改变你用foreach运行通过阵列信息

(https://stackoverflow.com/questions/15024616/php-foreach-change-original-array-values)

:请查看这篇文章。

最简单的解决方案,你会:

foreach($basicInfo as &$value){ 
    foreach ($value as $id){ 
     if($id == "prdes1_35"){ 
      $value = 2; 
     } 
    } 
} 

心灵的$值变量之前的符号(&)。引用的帖子中的链接包含了解所需的所有解释。

Perfomancewise这将是最好的解决方案,尤其是当你Array获取大:

foreach($basicInfo as $key => $value){ 
     foreach ($value as $id){ 
      if($id == "prdes1_35"){ 
       $basicInfo[$key][$value] = 2; 
      } 
     } 
    } 

注:我没有改变你的代码逻辑(即碎,我假设)。我只是演示了如何在使用foreach遍历数组时更改值。