2014-01-06 67 views
0

我有2個數組。有時array1中的鍵/值可能等於array2的鍵/值。如果是這樣,請將來自array2的特定鍵/值的「狀態」更改爲新值。那有意義嗎?PHP:根據array2值更改array1值

這裏就是我在:

foreach($array1 as $i=>$x){ 
      foreach($array2 as $k=>$y){ 
      if($x['url'] == $y['url']){ 

       // Up to here works 

       foreach($i as &$value) { 
       $value['status'] = 'new value'; 
      } 

       break; 
      } 
      } 
     } 

這是我的數組:

array(1) { 
    [0]=> array(1) { 
     ["url"]=> string(104) "aHR0cDovL3lvdXR1YmUuY29t" 
     ["date"]=> string(19) "2014-01-06 21:44:39" 
     ["status"]=> string(1) "0" 
    } 

    [1]=> array(1) { 
     ["url"]=> string(28) "d3d3LnR3aXR0ZXIuY29t" 
     ["date"]=> string(19) "2014-01-06 14:28:32" 
     ["status"]=> string(1) "0" 
    } 
} 

和數組2:

array(2) { 
    [0]=> array(2) { 
     ["url"]=> string(104) "aHR0cDovL3lvdXR1YmUuY29t" 
     ["date"]=> string(19) "2014-01-06 21:44:39" 
    } 

    [1]=> array(2) { 
     ["url"]=> string(28) "aHR0cDovL3d3dy5nb29nbGUuY29t" 
     ["date"]=> string(19) "2014-01-06 14:28:32" 
    } 
} 

到它的工作原理的評論。從那裏以後,我如何才能將該特定鍵/值更改爲新值?我目前的例子將所有關鍵'狀態'更改爲'新值'。

回答

1

你不通過array1必須循環再次只是改變了它的關鍵

$array1[$i]['status'] = 'new value'; 
+0

雖然的var_dump ($ X [ '狀態']);帖子爲:string(1)「0」,$ x ['status'] ='新值';不改變任何東西 – jQuerybeast

+0

我更新了我的答案,這對你更有意義嗎? –

+0

賓果!謝謝 – jQuerybeast

1

如何:

<?php 
    $array1 = array(
     array(
      "url" => "aHR0cDovL3lvdXR1YmUuY29t", 
      "date" => "2014-01-06 21:44:39", 
      "status" => "0" 
      ) 
     ); 
    $array2 = array(
     array(
      "url" => "aHR0cDovL3lvdXR1YmUuY29t", 
      "date" => "2014-01-06 21:44:39", 
      ) 
     ); 

    array_walk($array2, function($arr2) use (&$array1) 
    { 
     foreach($array1 as &$arr1) 
     { 
      if($arr2['url'] == $arr1['url']) 
       $arr1['status'] = "something"; 
     } 
    }); 

    print_r($array1); 

輸出

Array 
(
    [0] => Array 
     (
      [url] => aHR0cDovL3lvdXR1YmUuY29t 
      [date] => 2014-01-06 21:44:39 
      [status] => something 
     ) 
) 
+0

這不起作用 – jQuerybeast

+0

@jQuerybeast對不起,我起初誤解了。檢查更新。 – revo

+0

謝謝。我將使用你的方法,因爲我可以避免所有那些性能問題的foreach方法。 – jQuerybeast