Получить повторяющееся значение из родительского массива, а не повторяющееся значение из родительского массива

один является родительским массивом, а другой - фильтрованным массивом. Оттуда я просто хочу установить два отдельных массива общий массив уникальный массив

$a = array([0]=> Array
    (
        [id] => 22429
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[1]=> Array
    (
        [id] => 22430
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[2]=> => Array
    (
        [id] => 22431
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[3] => Array
    (
        [id] => 22432
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ));

$b = array("0"=> Array
    (
        [id] => 22428
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),"1" => Array
    (
        [id] => 22430
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[2]=> Array
    (
        [id] => 22431
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[3] => Array
    (
        [id] => 22432
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ));;

вывод для уникального массива будет

$c = array(
        [0]=> Array
        (
            [id] => 22429
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        )
    );

вывод для общего массива будет

$u = array(
        [0]=> Array
        (
            [id] => 22430
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        ),[1]=> Array
        (
            [id] => 22431
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        ),[2]=> Array
        (
            [id] => 22432
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        )
    );
array_diff, array_intersect.
u_mulder 10.09.2018 09:12

Почему эти числа являются строками, а не целыми числами?

Nils Werner 10.09.2018 09:14

@NilsWerner, почему это важно? Это может быть декодированный файл Json.

Andreas 10.09.2018 09:17

Когда вы задаете вопрос, убедитесь, что то, что вы спрашиваете, имеет отношение к фактическому коду и переменным. Одномерные и многомерные массивы обрабатываются совершенно по-разному.

Andreas 10.09.2018 10:22
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
4
45
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Для вашего общего массива:

array_intersect($a, $b);

Для вашего уникального массива:

array_unique(array_merge($a, $b), SORT_REGULAR);

Я обновил свой вопрос. Вы можете проверить это. array_unique не поддерживает.

Lemon Kazi 10.09.2018 09:22

Array_intersect и array_diff

$a = array('1','2','3','4');
$b = array('4','5','6','7');

$c = array_intersect($a, $b);
var_dump($c); //4

$d = array_diff($a,$b);
var_dump($d); //1,2,3

https://3v4l.org/Ut8JW

Я обновил свой вопрос. Вы можете проверить это. \ PhpErrorException: преобразование массива в строку

Lemon Kazi 10.09.2018 09:22
Ответ принят как подходящий

Чтобы получить общее из обоих массивов, используйте array_intersect ()

$c = array_values(array_intersect($a,$b)); //array_values() used for re-indexing final array
print_r($c);

Выход: - https://eval.in/1055829

Используйте array_diff ()

$c = array_values(array_diff($a,$b));//array_values() used for re-indexing final array
print_r($c);

Выход: - https://eval.in/1055830

Ссылка:-

array_values ​​()

Для вашего отредактированного вопроса применяет foreach() вместе с in_array() и array_column()

$final_array = [];

foreach($a as $key=>$val){
  if(in_array($val['id'],array_column($b,'id'))){
    $final_array[] = $val;
  }

}

print_r($final_array); // common values array 

Выход: - https://eval.in/1055838

А также

$final_array = [];

foreach($a as $key=>$val){
  if(!in_array($val['id'],array_column($b,'id'))){
    $final_array[] = $val;
  }

}

print_r($final_array); // non common value array

Выход: -https://eval.in/1055839

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