Изменение значений многомерных массивов - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть результаты запроса mysql в многомерном массиве следующим образом:

Array ( 
[0] => stdClass Object ( [name] => john doe [id] => john@doe.com [userlevel] => 1 ) 
[1] => stdClass Object ( [name] => mary jane [id] => mary@jane.com [userlevel] => 5 ) 
[2] => stdClass Object ( [name] => joe blow [id] => joe@blow.com [userlevel] => 1 )
);

Я хотел бы просмотреть их, проверить значение значения [userlevel] и if == '5 ', затем измените значение [name].Идея состоит в том, чтобы дать визуальный индикатор рядом с теми пользователями, которые имеют определенный уровень пользователя.

Я пытался перебрать использование foreach, но не могу заставить его работать.

Ответы [ 3 ]

2 голосов
/ 30 сентября 2011
foreach ($array as $i => &$user) {
    if ($user->userlevel == 5) {
        $user->name = 'foo';
    }
}

ПРИМЕЧАНИЕ: Амперсанд & очень важен здесь.

В качестве альтернативы:

for ($i = 0, $arrayLen = count($array); $i < $arrayLen; ++$i) {
    if ($array[$i]->userlevel == 5) {
        $array[$i]->name = 'foo';
    }
}
0 голосов
/ 30 сентября 2011

С сайта документации PHP

Unless the array is referenced, foreach operates on a copy of the specified array and not the array itself. foreach has some side effects on the array pointer. Don't rely on the array pointer during or after the foreach without resetting it.

0 голосов
/ 30 сентября 2011

Что вы пробовали?Нечто подобное должно работать.

foreach ($result as $i => $item)
{
    if ($item->userlevel == 5)
        $result[$i]->name = 'modified name';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...