Это ассоциативный массив:
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] => [email protected]
)
[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] => [email protected]
)
......
[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 = обеспечить и 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);
});
Как применить несколько условий фильтрации, переданных в виде массива массивов в ассоциативном массиве массивов?