2016-04-21 68 views
1

我有这个变量是我的查询结果:如何更改基于另一个键的数组键的值?

Array(
     [0] => Array 
     (
      [id] => 1 
      [visibility] => 0 
     ) 

     [2] => Array 
     (
      [id] => 2 
      [visibility] => 1 
     ) 

     [3] => Array 
     (
      [id] => 3 
      [visibility] => 0 
     ) 
) 

现在我想改变[id]项目的数量时,其[visibility]0。例如,我想在[id]的数字的开头追加00。这是预期的输出:

Array(
     [0] => Array 
     (
      [id] => 001 
      [visibility] => 0 
     ) 

     [2] => Array 
     (
      [id] => 2 
      [visibility] => 1 
     ) 

     [3] => Array 
     (
      [id] => 003 
      [visibility] => 0 
     ) 
) 

我该怎么做?


我可以检查visibility值是这样的:

foreach ($var as $item) { 
    if ($item['visibility'] == 0) { 
     // I need to append two zero before the number of its id 
    } 
} 

回答

3

你开始foreach和正确的条件检查,但没写里面的任何代码。检查下面: -

<?php 
    foreach ($var as $key=> $item) { 
     if ($item['visibility'] == 0) { // if visibility is 0 
      $var[$key]['id'] = "00". $var[$key]['id']; // add 00 to corresponding id in the original array 
     } 
    } 
    echo "<pre/>";print_r($var); 
    ?> 
2

稍微容易引用$item并改变它:

foreach ($var as &$item) { 
    if ($item['visibility'] == 0) { 
     $item['id'] = "00{$item['id']}"; 
    } 
} 
+0

参考是:http://php.net/manual/en/language.references.php还有一个例如在http://php.net/manual/en/control-structures.foreach.php – AbraCadaver

+0

'$ item'是''var'中每个数组的引用'&',所以它的工作原理是。 – AbraCadaver

+0

哦..是的,你是对的。 – stack

相关问题