Сортировка ksort()

200
31 августа 2018, 23:40

Задача - переназначить ключи в массиве и отсортировать массив по вновь назначенным ключам. Я новичок в 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

Где моя ошибка?

Answer 1

Так вы изменяете ключ, но он не сохраняется-жеж, вот вам наставление, а дальше если что докрутите сами:

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>";
    }
}
READ ALSO
Как получить файлы из корня сервера?

Как получить файлы из корня сервера?

Есть indexphp расположенный по такому пути: /home/user/web/example

221
Zend-log - как исправить ошибку при записи бд?

Zend-log - как исправить ошибку при записи бд?

Пробую использовать этот компонент в своём проекте

231
Отправка на эмейл контента, div блока

Отправка на эмейл контента, div блока

Скачал скрипт отправки данных формы на эмейл (имя, эмейл, телефон и проч)

246
PHP CLI как получить домен

PHP CLI как получить домен

Есть PHP процесс который работает в месте с веб-сервером внутри контейнера Docker, процесс запускается с помощью PHP-CLI и после работы должен отдавать...

221