@denism300

Почему не сохраняется массив?

Есть массив вида:
Array
(
    [0] => Array
        (
            [id] => 333
            [title] => Заголовок
        )

    [1] => Array
        (
            [id] => 334
            [title] => Название
        )
)

Я пытаюсь сделать, чтобы при выполнении определенных условий добавлялся элемент
foreach ($result as $article) {
    if (mb_stripos($article['title'], 'заголовок', 0, 'UTF-8') !== false) {
        $article['image'] = 'images/image.jpg';
    }
}

однако, по выполнению цикла массив $result без изменений. Но если вывести $article в цикле foreach после if, то все как надо
  • Вопрос задан
  • 92 просмотра
Решения вопроса 2
iMedved2009
@iMedved2009
Не люблю людей
https://www.php.net/manual/ru/control-structures.f...

Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. В этом случае значение будет присвоено по ссылке.


foreach ($result as &$article) {
    if (mb_stripos($article['title'], 'заголовок', 0, 'UTF-8') !== false) {
        $article['image'] = 'images/image.jpg';
    }
}
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Изменить значение внутри форич можно 2 способами: по ссылке (foreach ($result as &$article)...) или через индекс (
foreach ($result as $key=>$article){...$result[$key] = $article;}
). В вашем коде оба условия отсутствуют, вы просто меняете временную переменную, никуда ее не записывая.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы