Я хотел бы удалить все элементы из массива, которые не удовлетворяют некоторым условиям.
Например, у меня есть этот 2D-массив:
[ ['UK', '12', 'Sus', 'N'], ['UK', '12', 'Act', 'Y'], ['SQ', '14', 'Act', 'Y'], ['CD', '12', 'Act', 'Y'] ]
и я хотел бы удалить все строки, которые не соответствуют этому формату:
['UK' or 'CD', '12', Any Value, 'Y']
оставляя меня с этим фильтрованным массивом:
[ ['UK', '12', 'Act', 'Y'], ['CD', '12', 'Act', 'Y'] ]
Как я могу это сделать?
Используйте array_filter
. Он позволяет выполнять проверку каждого элемента, предоставляя обратный вызов. В этой функции обратного вызова верните true для элементов, соответствующих вашим критериям. array_filter
возвращает массив со всеми элементами, которые не соответствуют вашим критериям.
Например, ваш массив примеров можно отфильтровать следующим образом:
$array = [ ['UK', '12', 'Sus', 'N'], ['UK', '12', 'Act', 'Y'], ['SQ', '14', 'Act', 'Y'], ['CD', '12', 'Act', 'Y'] ]; $filtered_array = array_filter($array, function ($item) { return count($item) >= 4 && ($item[0] == 'UK' || $item[0] == 'CD') && $item[1] == '12' && $item[3] == 'Y'; }); print_r($filtered_array);