Intereting Posts
Пакеты Composer, автозагрузка неклассифицированных файлов Автоматически удалять запись в таблице, когда дата истекла? Как интегрировать MongoDB с Solr? Как передать переменные $ _GET из ссылки в bootstrapmodal? Отправлять электронные письма с использованием международного акцента и специальных символов PHP при записи в файл, Как добавить и добавить текст в файл с существующим текстом? MySQL: ВЫБРАТЬ победителя, возвращая свой ранг Самый эффективный способ кодирования дружественных URL-адресов для SEO? Как отключить кнопку заднего браузера после того, как пользователь выйдет из системы и уничтожит сеанс? Сеанс PhP не обновляется с использованием AJAX Отправка файла в браузер в качестве вложения ZF2: Как использовать средство проверки InArray для проверки элемента формы Multiselect? Как декодировать числовые объекты HTML в PHP mb_substr не может использоваться на PHP 5.2.6 Regex для отклонения неанглийских символов?

php – как искать несколько пар ключ / значение в массиве ассоциативных массивов и возвращать соответствующие элементы?

Это ассоциативный массив:

Array ( [tableData] => Array ( [0] => Array ( [booking_name] => abc/xyz/123 [pdg] => assure [user_area] => es st [release] => oss72 [start_date] => 2017-06-20 00:00:00 [end_date] => 2017-06-23 00:00:00 [asset_info] => Array ( [0] => Array ( [status] => 10 [manufacturer] => HP [model] => HP BL460C GEN8 [hardware_color] => #0066b3 ) ) [full_name] => Valay Desai [email_address] => valay@xyz.com ) [1] => Array ( [booking_name] => abc/xyz/123 [pdg] => assure [user_area] => ls reca [release] => oss72 [start_date] => 2017-06-20 00:00:00 [end_date] => 2017-06-23 00:00:00 [asset_info] => Array ( [0] => Array ( [status] => 10 [manufacturer] => SUN [model] => SUN GEN8 [hardware_color] => #0066b3 ) ) [full_name] => Chako Desai [email_address] => chako@xyz.com ) ...... [500] => Array () ) ) 

Я знаю обычный способ отфильтровывать данные с помощью array_filter и сравнивать значение. Я хотел бы искать следующие пары ключ / значение в tableData .

 Array ( [booking_name] => abc [pdg] => Array ( [0] => Array ( [name] => Invalid [value] => Invalid ) [1] => Array ( [name] => assure [value] => assure ) ) [user_area] => Array ( [0] => Array ( [name] => es st [value] => es st ) [1] => Array ( [name] => Invalid [value] => Invalid ) [2] => Array ( [name] => a&o [value] => a&o ) ) ) 

Идеальный вывод должен быть первым элементом из tableData как он имеет имя_архива = abc, pdg = assure и user_area = es st

Я попробовал:

 // bigarray is an originial array to be filtered // filterObj is an array with multiple filter conditions array_filter($bigarray, function ($val_array) use ($filterObj) { $intersection = array_intersect_assoc($val_array, $filterObj); return (count($intersection)) === count($filterObj); }); 

Это всегда возвращает пустой массив.

FYI- Я новичок в PHP .

Обновление 1:

Я использовал ниже, чтобы получить объекты, у которых есть visible:true . Пробовал подобное по заданному вопросу, но не смог добиться идеального результата.

 $columnVisible = array( 'visible' => 1, ); $visibleColumns = array_filter($passedColumns, function ($val_array) use ($columnVisible) { $intersection = array_intersect_assoc($val_array, $columnVisible); return (count($intersection)) === count($columnVisible); }); 

Как применить несколько условий фильтрации, переданных в виде массива массивов в ассоциативном массиве массивов?

Related of "php – как искать несколько пар ключ / значение в массиве ассоциативных массивов и возвращать соответствующие элементы?"

Попробуйте это решение.

 $filters = array('pdg'=>array('xyzabc'), 'user_area'=>array('ls reca')); $filter_items = array(); foreach( $items['tableData'] as $item ){ $i=0; $is_match = true; foreach( $filters as $key=>$value){ //$is_match = true; if( !in_array( $item[$key], $value) ){ $is_match = false; break; } //$is_match = true; } if( $is_match ){ $filter_items[] = $item; } }