PHP - 替换多维数组中特定键的数据

8

我正在重新学习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_replacejson_decode ,但都没有成功。它们要么替换所有的'1',要么根本不替换。我需要只针对ad_type键进行替换。

2个回答

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

1
谢谢。根据您的示例已经解决了问题。'code' foreach($qresult as &$value) { $value['ad_type'] = str_replace ("1","插屏广告",$value['ad_type']); $value['ad_type'] = str_replace ("2","顶部框架广告",$value['ad_type']); } - Damo

5

使用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/zh/control-structures.foreach.php了解更多相关的信息。


1
这个答案显然不起作用。如果你要继续这条路,你需要一个双重循环。请看http://sandbox.onlinephpfunctions.com/code/2a24a4a92664467864f81ecc76e81b4079a7c261 - apokryfos
这种方法在任何多维数组中都不起作用。"""foreach ($arrayName as &$value) { $value['ValueName'] = str_replace($value['ValueName'],encryptText($value['ValueName']),$value['ValueName']); }"""对我有用。 - Parth Kinjal Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接