PHP - заменить данные в многомерном массиве, конкретный ключ - PullRequest
5 голосов
/ 24 апреля 2011

Я переучиваю 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, заменить на х Где ad_type = 2, заменить на y

Я безуспешно использую str_replace и json_decode. Они либо заменяют все экземпляры '1', либо вообще ничего. Мне нужно только нацелить ключи ad_type.

Ответы [ 2 ]

6 голосов
/ 24 апреля 2011
foreach($array as &$value) {
    $value['ad_type'] = 'new value';
}
5 голосов
/ 24 апреля 2011

Лучший способ получить доступ к ключам и значениям массива - цикл 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...