Как пройти через несколько циклов foreach и вставить данные в базу данных

Доброе утро, братцы, как дела? у меня проблема с этим циклом

$users = User::all(); 
foreach($users as $user)
{
    foreach($data->toArray() as $dataRows) 
    { 
        if ($user->admin ==0) 
        {
            $Data[]= 
                [
                'user_id' => $user->id, 
                'avatar' => 'avatar.png',
                'about' => $dataRows['description'] 
                ];
        }
    }
}
profile::insert($Data); 

Он проходит через каждого пользователя и назначает каждому пользователю все строки данных. пожалуйста помоги

Можете ли вы сформулировать вопрос более четко?

DigitalDrifter 05.05.2018 12:33

Где инициализировать $Data? Есть ошибка? С какой проблемой вы столкнулись?

Joas 05.05.2018 12:40

в чем ошибка?

Chirag Patel 05.05.2018 12:40

Ошибка не возвращается, данные добавляются в базу данных, однако, допустим, например, user_id 1 добавлен в базу данных, все 58 dataRows присвоены user_id 1 и повторяются 58 раз для одного и того же пользователя, и когда это будет сделано , он переходит ко второму пользователю и делает то же самое.

Thomas Chirwa 05.05.2018 12:47

Это то, что можно ожидать от вложенных циклов. Вам нужно будет синхронно перебирать оба источника данных. Оба массива случайно «проиндексированы»?

mickmackusa 05.05.2018 14:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
103
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что ваш массив пользователей проиндексирован, а данные вашей строки являются индексированным массивом ассоциативных массивов, вы можете объединить / синхронизировать данные с помощью одного цикла, используя общий индекс ($i).

$users = User::all();
$rows = $data->toArray();
foreach ($users as $i => $user) {
    if (!$user->admin) {
        $Data[]= 
            [
            'user_id' => $user->id, 
            'avatar' => 'avatar.png',
            'about' => isset($rows[$i]['description']) ? $rows[$i]['description'] : 'default'
            ];
    }
}
profile::insert($Data); 

p.s. Может быть целесообразно (в зависимости от ваших данных) проверить, существуют ли соответствующие данные $row с isset(), прежде чем пытаться получить доступ к значению.

Я попытался использовать приведенный выше код, и он выдает эту ошибку. Неопределенное смещение: 57

Thomas Chirwa 05.05.2018 14:55

Вам нужно будет добавить && isset($rows[$i]['description']) после !user->admin, но это означает, что пользователи без описаний будут исключены из процесса INSERT. ... так что это вызывает больше вопросов о вашей задаче ... Как вы можете слепо и уверенно объединить эти два набора данных? Откуда вы знаете, что должно быть объединяет данный идентификатор пользователя с данным описанием? Неопределенное смещение означает, что у вас меньше описаний, чем у пользователей.

mickmackusa 05.05.2018 14:58

для этой части он возвращает true или false 'about' => $ rows [$ i] ['description'] он не возвращает описание

Thomas Chirwa 05.05.2018 16:33

Вы получили URL

Thomas Chirwa 05.05.2018 16:47

Удалось заставить его работать. Большое спасибо, чувак. Есть ли у вас адрес Skype?

Thomas Chirwa 05.05.2018 16:53

Другие вопросы по теме