Задать вопрос
@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, то все как надо
  • Вопрос задан
  • 108 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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;}
). В вашем коде оба условия отсутствуют, вы просто меняете временную переменную, никуда ее не записывая.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽