Задача - переназначить ключи в массиве и отсортировать массив по вновь назначенным ключам. Я новичок в php поэтому для переназначения выбрал, скорее всего, не очень хороший способ, но вопросы заключается не в этом, поэтому прошу не обращать внимания. Суть проблемы - после переназначения ключей, я сортирую с помощью ksort($array), но ключи, почему-то не сохраняют связи со значениями. Хотя на php.net написано
Сортирует массив по ключам, сохраняя отношения между ключами и значениями.
foreach ($cat['products'] as $product) {
foreach ($product as $key => $value) {
if ($key == 3) {
$key = 4;
} elseif ($key == 6) {
$key = 5;
} elseif ($key == 7) {
$key = 6;
} elseif ($key == 5) {
$key = 3;
} elseif ($key == 4) {
$key = 7;
}
echo $key." - ".$value."<br>";
}
ksort($product);
foreach ($product as $key => $value) {
echo $key." - ".$value."<br>";
}
}
//Output:
0 -
1 - Комплект мебели Coffe
2 - Coffe 2P
4 - 22000.00
7 - image/data/i/ej/de/44af3939fa3b597bf7084cdc0f9e71c1.jpg
3 - 0
5 - 17850.00
6 - 17000.00
0 -
1 - Комплект мебели Coffe
2 - Coffe 2P
3 - 22000.00
4 - image/data/i/ej/de/44af3939fa3b597bf7084cdc0f9e71c1.jpg
5 - 0
6 - 17850.00
7 - 17000.00
Где моя ошибка?
Так вы изменяете ключ, но он не сохраняется-жеж, вот вам наставление, а дальше если что докрутите сами:
foreach ($cat['products'] as $product) {
$product2 = array();
foreach ($product as $key => $value) {
switch ($key) {
case '3':
$key = 4;
break;
case '6':
$key = 5;
break;
case '7':
$key = 6;
break;
case '5':
$key = 3;
break;
case '4':
$key = 7;
break;
default:
break;
}
$product2[$key] = $value;
echo $key." - ".$value."<br>";
}
ksort($product2);
foreach ($product2 as $key => $value) {
echo $key." - ".$value."<br>";
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости