Всем привет. помогите пожалуйста произвести поиск по массиву. третий день мучаюсь. есть два массива Код (PHP): $haystack=[ [ 'id_build'=>5, 'lvl'=>3 ], [ 'id_build'=>1, 'lvl'=>5 ], [ 'id_build'=>8, 'lvl'=>10 ], [ 'id_build'=>6, 'lvl'=>6 ], ]; $needle=[1=>5,2=>1]; в массиве $needle ключ - это id_build, значение - lvl. в данном примере, в массиве $haystack нет вложенного массива с id_build=2 и lvl=1. подскажите, как правильно организовать поиск? буду очень блпгодарен PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
не бойся пробовать! Код (PHP): array_search ($needle, $haystack); при это needle должно быть массивом вида Код (PHP): [ 'id_build'=>2, 'lvl'=>1 ]
массив needle может быть таким? Код (PHP): [ [ 'id_build'=>2, 'lvl'=>1 ], ] многомерным? нет возможности проверить PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
спасибо. но в многомерном не ищет. да и в принципе array_search не подходит, так как lvl в needle может будет меньше, чем lvl в haystack ((
array_filter — указываешь свою функцию фильтрации какую захочешь. Добавлено спустя 12 минут 51 секунду: Код (PHP): // $cond - условия key=>value // чтобы строка прошла фильтр, надо чтобы все указанные ключи существовали и все условия выполнились, // (другими словами, используется связка условий по "И") function filter(array $in, array $cond) { return array_filter( $in, function ($var) use($cond) { return $cond + $var == $var; } ); } var_export( filter($haystack, ['id_build' => 5, 'lvl' => 3]) );