У меня есть результирующий набор в виде массива из базы данных, которая выглядит как:PHP манипулируя многомерный массив значений
array (
0 => array (
"a" => "something"
"b" => "something"
"c" => "something"
)
1 => array (
"a" => "something"
"b" => "something"
"c" => "something"
)
2 => array (
"a" => "something"
"b" => "something"
"c" => "something"
)
)
Как бы применить функцию для замены значений массива только от ключа массива с б ? Обычно я просто перестраивал новый массив с циклом foreach и применял бы эту функцию, если ключ массива - b, но я не уверен, что это лучший способ. Я попытался взглянуть на многие функции массива, и казалось, что array_walk_recursive - это то, что я могу использовать, но мне не повезло, что он сделал то, что я хочу. Если я не описывая его достаточно хорошо, в основном я хочу, чтобы быть в состоянии сделать, как код ниже делает:
$arr = array();
foreach ($result as $key => $value)
{
foreach ($value as $key2 => $value2)
{
$arr[$key][$key2] = ($key2 == 'b' ? $this->_my_method($value2) : $value2);
}
}
Должен ли я придерживаться этого, или есть способ лучше?
Спасибо, я уже пробовал array_walk_recursive, как я сказал выше, но это не сработало. Видимо, я забыл разместить амперсанд перед параметром $ item! Работаю сейчас. – Joker
Yup, простой ошибка. Цитирование руководства: 'Если funcname должно работать с фактическими значениями массива, укажите первый параметр funcname как ссылку. Затем любые изменения, внесенные в эти элементы, будут сделаны в самом исходном массиве. « – thirtydot