Добрый день! Кто знает как можно произвести фильтрацию одного массива с помощью значений другого массива PHP: <? /// Имеется массив /// $myArray = array ( array ( 'ID' => 1, 'NAME' => "Восемь", ), array ( 'ID' => 2, 'NAME' => "Два", ), array ( 'ID' => 4, 'NAME' => "Пять", ), array ( 'ID' => 5, 'NAME' => "Два", ), array ( 'ID' => 6, 'NAME' => "Шесть", ), array ( 'ID' => 7, 'NAME' => "Два", ), array ( 'ID' => 3, 'NAME' => "Три", ), ); /// Функция фильтрации по двум значениям /// function filter($value) { return $value["NAME"] == "Два" || $value["NAME"] == "Три"; } $filtered = array_filter($myArray, filter); print_r($filtered); /// Получаю фильтрованный массив где NAME = Два или NAME = Три /// Array ( [1] => Array ( [ID] => 2 [NAME] => Два ) [4] => Array ( [ID] => 5 [NAME] => Два ) [6] => Array ( [ID] => 7 [NAME] => Два ) [6] => Array ( [ID] => 3 [NAME] => Три ) ) ?> Можно ли в функции указать не значения NAME == "Два" или NAME == "Три" а например массив значений? PHP: <? /// Массив значений которые необходимо найти в массиве myArray $value = array( array ( 'ID' => 1, 'NAME' => "Два", ), array ( 'ID' => 2, 'NAME' => "Три", ), ); /// Типа вот такой конструкции /// function filter($value) { return array( $value["NAME"] => "Два", $value["NAME"] => "Три", ); } $filtered = array_filter($myArray, filter); ?>
PHP: <?php $myArray = array ( array ( 'ID' => 1, 'NAME' => "Восемь", ), array ( 'ID' => 2, 'NAME' => "Два", ), array ( 'ID' => 4, 'NAME' => "Пять", ), array ( 'ID' => 5, 'NAME' => "Два", ), array ( 'ID' => 6, 'NAME' => "Шесть", ), array ( 'ID' => 7, 'NAME' => "Два", ), array ( 'ID' => 3, 'NAME' => "Три", ), ); $find = array ("Два", "Три"); $filtered = array_filter($myArray, function($e) use ($find) { return in_array($e['NAME'], $find); }); print_r($filtered);
Круто! Большое Вам спасибо, то что нужно было : ) А такая конструкция может позволить производить фильтрацию одновременно по двум разным значениям, например по NAME и по PROPERTY? PHP: $myArray = array ( array ( 'ID' => 1, 'NAME' => "Восемь", 'PROPERTY' => 500, ), array ( 'ID' => 2, 'NAME' => "Два", 'PROPERTY' => 300, ), array ( 'ID' => 4, 'NAME' => "Пять", 'PROPERTY' => 500, ), array ( 'ID' => 5, 'NAME' => "Два", 'PROPERTY' => 800, ), array ( 'ID' => 6, 'NAME' => "Шесть", 'PROPERTY' => 900, ), array ( 'ID' => 7, 'NAME' => "Два", 'PROPERTY' => 100, ), array ( 'ID' => 3, 'NAME' => "Три", 'PROPERTY' => 700, ), ); /// Что то типа такого /// PHP: $find1 = array ("Два", "Три"); $find2 = array (100, 700); $filtered = array_filter($myArray, function($e) use ($find1, $find2) { return in_array($e['NAME'], $find1); return in_array($e['PROPERTY'], $find2); }); print_r($filtered);