Не знаю, правильно ли я вас понял, но если вам нужно отфильтровать всех людей из под-массивов (PHP, Flex, System, ...), а затем отсортировать их по ихимя или зарплата, вы могли бы сделать это таким же или иным способом:
$array = [
'PHP' => [
[
'name' => 'Jay',
'salary' => 8000
],
[
'name' => 'Raj',
'salary' => 15000
],
[
'name' => 'Mihir',
'salary' => 12000
]
],
'Flex' => [
[
'name' => 'Vijay',
'salary' => 14000
]
],
'System' => [
[
'name' => 'Kishan',
'salary' => 5000
]
]
];
$array_people = [];
$array_sorted = [];
$sort_by = 'name'; // Array key name
$sort_desc = false;
$min_salary = 10000;
foreach ($array as $type => $people)
{
foreach ($people as $info)
{
if ($info['salary'] >= $min_salary) {
$array_sorted[] = $info[$sort_by];
$array_people[] = $info;
}
}
}
if ($sort_desc) {
// Sort descending
arsort($array_sorted);
} else {
// Sort ascending
asort($array_sorted);
}
$array_final = [];
foreach (array_keys($array_sorted) as $index)
{
$array_final[] = $array_people[$index];
}
print_r($array_final);
Вывод:
Array
(
[0] => Array
(
[name] => Mihir
[salary] => 12000
)
[1] => Array
(
[name] => Raj
[salary] => 15000
)
[2] => Array
(
[name] => Vijay
[salary] => 14000
)
)
Первое, что вам нужно сделать, этообрабатывать основной массив таким способом, который позволяет вам хранить только те элементы, которые вы хотите - эти элементы должны храниться в другом (пустом) массиве (в данном случае $array_people
).
При обнаруженииэлементы, которые вам нужны, вы должны получить все значения, по которым вы хотите отсортировать - это можно сделать одновременно.Это просто создание нового массива, который будет содержать только те значения, по которым вы будете сортировать (в данном случае $array_sorted
).
Затем наступит более легкая часть.Следующее, что нужно сделать, это отсортировать массив.Существует набор функций , которые могут помочь вам в этом.
Используемые мной функции (asort
и arsort
) сохраняют оригинальный ключ элемента,так что вы можете отсортировать массив, содержащий всех людей, по ключам отсортированного массива (см. код выше).
И это все, теперь у вас есть массив с фильтрацией и сортировкойлюди :) ... надеюсь, это поможет вам.