2011-04-24 65 views
3

我重新學習PHP,所以對不起,可能是一個基本問題。我找不到答案。PHP - 替換多維數組中的數據,特定鍵

我有一個多維數組,我需要用另一個值替換特定鍵(所有實例)的值。

Array ( 
    [13] => Array ( 
       [ad_id] => 13 
       [ad_name] => Qhxxst 
       [ad_link] => www.qxxst.co.uk 
       [ad_type] => 1 
      ) 
    [15] => Array ( 
       [ad_id] => 15 
       [ad_name] => Pxxly 
       [ad_link] => http://pixxly.net 
       [ad_type] => 1 
      ) 
    [16] => Array ( 
       [ad_id] => 16 
       [ad_name] => cxxm 
       [ad_link] => http://www.cxxm.co.uk 
       [ad_type] => 1 
      ) 
) 

我希望用另一個值替換所有ad_type實例。 即 凡AD_TYPE = 1,其中x 代替凡AD_TYPE = 2,其中y

我已經使用str_replace函數和json_decode沒有成功替換。它們要麼取代所有'1'的實例,要麼完全沒有。我只需要定位ad_type鍵。

非常感謝。

回答

6

訪問數組的鍵和值的最佳方法是使用foreach循環。

喜歡的東西:

$array= Array ([13] => Array ([ad_id] => 13 [ad_name] => Qhxxst [ad_link] => www.qxxst.co.uk [ad_type] => 1) [15] => Array ([ad_id] => 15 [ad_name] => Pxxly [ad_link] => http://pixxly.net [ad_type] => 1) [16] => Array ([ad_id] => 16 [ad_name] => cxxm [ad_link] => http://www.cxxm.co.uk [ad_type] => 1)); 

foreach ($array as $key=>$val) 
{ 
    if ($key=="ad_type" && $val==1) 
    { 
     $val="x"; 
    } 
    elseif ($key=="ad_type" && $val==2) 
    { 
     $val="y"; 
    } 
} 

更多參考http://php.net/manual/en/control-structures.foreach.php

+0

您可能需要引用'ad_type',否則PHP每次都會查找一個具有相同名稱的常量。 – alex 2011-04-24 14:13:24

+0

是的,感謝您的注意,趕緊寫下了它:) – Maverick 2011-04-24 14:14:59

4
foreach($array as &$value) { 
    $value['ad_type'] = 'new value'; 
} 
+0

謝謝。使用你的例子進行排序。 'code'foreach($ qresult as&$ value){value} ['ad_type'] = str_replace(「1」,「Interstatial」,$ value ['ad_type']); $ value ['ad_type'] = str_replace(「2」,「Top Frame」,$ value ['ad_type']); } – Damo 2011-04-24 14:09:33