Intereting Posts

PHP: фильтр

Я хотел бы удалить все элементы из массива, которые не удовлетворяют некоторым условиям.

Например, у меня есть этот 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'] ] 

Как я могу это сделать?

Solutions Collecting From Web of "PHP: фильтр"

Используйте 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);