2011-04-24 48 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