сортировка многомерного массива на 2-м уровне по значению переполнения стека

У меня есть многомерный массив, и я хочу отсортировать значения на 2-м уровне в алфавитном порядке

$shop = array(
"director" => Array
(
"0" => 'Sushil Majumdar',
"1" => 'Jyotirmoy Ray',
"3" => 'Phani Gangopadhyay',
"5" => 'Chitta Bose',
"6" => 'Satyajit Ray',
"7" => 'Ajoy Kar'
),

"producer" => Array
(
"0" => 'Bharat Lokchitram Ltd.',
"1" => 'Lokbani Chitrapratisthan',
"2" => 'Rama Chhayachitra',
"3" => 'Poddar Pictures',
"4" => 'Rama Chhayachitra Ltd.',
"5" => 'Chhayachitra Parishad',
"6" => 'Government of West Bengal',
"7" => 'Bikash Ray Productions',
"8" => 'Epic Films'
)
);
$keys = array('director'=>1);

foreach ($shop as $k => $v){
if(array_key_exists($k, $keys)){
foreach ($v as $ke => $ve){
sort($shop[$k]);

}
}
}

Хотя это может сортировать, но как-то не влияет на мой результат
так как я могу отсортировать значения моего массива в алфавитном порядке в порядке возрастания

0

Решение

Ваш фрагмент кода работает. Но для каждого цикла, который вы использовали для итерации по $ v, сортировка не играет никакой роли. Так что вы можете удалить это.
Держи как;

foreach ($shop as $k => $v){
if(array_key_exists($k, $keys)){
sort($shop[$k]);
}
}
print_r($shop);  //alphabetically sorted values under "director" key

Если вы напечатаете массив $ shop, вы найдете значения в разделе «директор», отсортированные по алфавиту.

0

Другие решения

Вы можете использовать следующую функцию для сортировки вашего массива на 2-м уровне:

function sortOnKeys($array, array $keys) {
foreach ($array as $k => $v){
if(array_key_exists($k, $keys)){
sort($array[$k]);
}
}
return $array;
}/* set your keys */
$keys = array('director' => 1, 'producer' => 2);/* invoke the sorting function */
$sorted = sortOnKeys($shop, $keys);echo '<pre>';
var_dump($sorted);
echo '</pre>';
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector