Reputation: 2070
I'm relearning PHP, so sorry for might be a basic question. I can't find an answer.
I have a multidimensional array, I need to replace the value for a specific key (all instances of) with another value.
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
)
)
I wish to replace all instances of ad_type with another value. i.e. Where ad_type = 1, replace with x Where ad_type = 2, replace with y
I've been using str_replace
and json_decode
without success. They either replace all instances of '1' or nothing at all. I need to target ad_type keys only.
Upvotes: 8
Views: 26997
Reputation: 2016
Best way to access the keys and values of an array is with foreach loop.
Something like:
$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";
}
}
For further reference http://php.net/manual/en/control-structures.foreach.php
Upvotes: 5