Intereting Posts
Разрешить загрузке страницы только в iframe и предотвращать прямой доступ Индекс слов PHP, производительность и разумные результаты Как включить расширение XDebug на моем php? Файл PHPExcel может быть поврежден или небезопасен Как хранить qrcode, сгенерированный с помощью phpqrcode, в db вместо пути к файлу? Существуют ли какие-либо библиотеки PHP для разбора ASN.1 или генерирования PHP-кода на его основе? Laravel 5.2: интегрируйте пакет доверенности, создайте роль и разрешения и получите доступ к нему. Проверка Laravel: требуется только одно поле и только одно поле Кодовое завершение / помощь для встроенных функций PHP в Eclipse PDT Кодирование файлов cookie, чтобы их нельзя было подделать или читать и т. Д. Проблемы с Php Include () Обслуживание загрузки файла с использованием PHP включить отключить выбор / выпадающий выбор радио in_array – эквивалент 'in_object'? Как установить V8js на PHP5.5?

Как объединить два массива без двойных значений в php?

У меня есть два массива: 1. каждый объект представляет собой строку, полученную из базы данных.

array 1 => object(stdClass)[41] public 'id' => string '1' (length=1) public 'class_id' => string '25' (length=2) public 'section_id' => string '2' (length=1) public 'student_id' => string '1' (length=1) public 'date' => string '2011-11-27' (length=10) public 'attendance' => string 'present' (length=7) 2 => object(stdClass)[41] public 'id' => string '1' (length=1) public 'class_id' => string '25' (length=2) public 'section_id' => string '2' (length=1) public 'student_id' => string '3' (length=1) public 'date' => string '2011-11-27' (length=10) public 'attendance' => string 'present' (length=7) 

2. Другой массив из моей формы, и это выглядит так.

 array 0 => array 'class_id' => string '25' (length=2) 'section_id' => string '2' (length=1) 'student_id' => int 1 'date' => string '2011-11-27 00:00:00' (length=19) 'attendance' => string 'present' (length=7) 1 => array 'class_id' => string '25' (length=2) 'section_id' => string '2' (length=1) 'student_id' => int 2 'date' => string '2011-11-27 00:00:00' (length=19) 'attendance' => string 'present' (length=7) 

Здесь я хочу сделать следующее:
– сравните эти два и проверьте, находятся ли key student_id и дата уже в базе данных или нет.
– и из второго массива, который из данных формы, удаляет дубликат и вставляет в данные.
Конечным результатом будет:

 array 0 => array 'class_id' => string '25' (length=2) 'section_id' => string '2' (length=1) 'student_id' => int 2 'date' => string '2011-11-27 00:00:00' (length=19) 'attendance' => string 'present' (length=7) 

Пытаться:

 $ c = [array_merge] [1] ($ a, $ b);

 var_dump ([array_unique] [1] ($ с));

Надеюсь, поможет

В дополнение к анонсу DemoUser, установив флаг SORT REGULAR в качестве аргумента, я решил проблему «преобразование массива в строку»:

 $c = array_merge($a,$b); $d = array_unique($c, SORT_REGULAR); var_dump($d); 

Поскольку ваши массивы (база данных и форма) НЕ являются точно такими же, вы не можете вызывать функции array_merge или array_unique. Вам нужно будет перебирать строки базы данных один раз и сохранять в возвращаемых значениях в отдельном массиве на основе ключа (Карта). Затем итерация через форму возвращает массив и поиск в предварительно подготовленном массиве для ключа, и если он найден, просто удалите этот элемент из возвращаемого массива формы. Рассмотрим следующий фрагмент кода для этого:

 // assuming database returned rows are in $rows array // assuming form returned records are in $forms array $dbArray = array(); foreach($rows as $r) { // need to convert string to int and string to date to match data in both sets $dbArray[ array( (int) $r->student_id, strtotime($r->date) ) ] = 1; } $diffArray = array(); foreach($forms as $f) { $key = array( $f['student_id'], strtotime($f['date']) ); if (!array_key_exists($key, $dbArray)) $diffArray[] = $f; } // now $diffArray will have the final result you're looking for