Использование CakePHP 2.0 здесь. Название немного вводит в заблуждение, поэтому, чтобы очистить вещи, у меня есть сеансовый массив, который заполнен идентификаторами продуктов, поскольку пользователь добавляет их в корзину. Таким образом, этот массив имеет вид [0] => 25, [1] => 70 и т. Д. Предположим, что этот массив называется $ продуктами.Как сортировать массив, сохраняя его начальное состояние
Я хочу спросить, есть ли возможность иметь массив, который я получаю, используя функцию 'find' ('conditions' => array ('Product.id' => $ products)) для сортировки не по некоторым значениям Model.field (как в опции «order»), а по индексам массивов $ products, поэтому, когда я представляю содержимое продуктов в поле зрения, я получаю все эти продукты в корзине, отсортированные в такой последовательности, как пользователь добавлял их ,
Вот пример - Session массив $ продуктов:
[0] => 35,
[1] => 15,
[2] => 25
Затем я передаю этот массив в условиях функции найти:
$list = $this->Product->find('all', array('conditions' => array('Product.id' => $products)));
В конце $ список дает мне массив, отсортированный по Код товара. Поэтому вместо того, чтобы:
[0] => Array
(
[Product] => Array
(
[id] => 35)),
[1] => Array
(
[Product] => Array
(
[id] => 15)),
[2] => Array
(
[Product] => Array
(
[id] => 25))
я получаю:
[0] => Array
(
[Product] => Array
(
[id] => 15)),
[1] => Array
(
[Product] => Array
(
[id] => 25)),
[2] => Array
(
[Product] => Array
(
[id] => 35))
До сих пор все ответы не решить мою проблему. Пожалуйста, обратите более пристальное внимание на пример, который я дал, это очень просто, но ответы предоставляются в другом ключе.
Опять же, мне нужно окончательный массив список $ быть отсортированы по показателям массива сессии $ продуктов, но я получаю список $ отсортированный по полю Product.id, даже если я не указываем 'find(array('order'=> ...))'
и даже попытался установить его на ложь.
не может понять вопрос, но я думаю, что это может помочь ... Вы не можете сортировать массив сохраняя свое первоначальное состояние (потому что вы его заказываете), но вы можете сохранить его дважды или даже лучше, вы можете хранить индексы массива в своем первоначальном состоянии, поэтому вы можете заказать массив, как и в вашем начальном состоянии (или наоборот), когда захотите. $ initial_state_indexes = array_keys ($ the_array); –
Согласитесь, вопрос немного расплывчатый ... Попробуйте уточнить свою точку с кодом или подойти к ней под другим углом. – mseancole
Я вообще не использую «заказ».Как я уже говорил, массивы $ -секундных массивов содержат идентификаторы продуктов, в которых индексы (от [0] и т. Д.) Представляют собой последовательность продуктов, добавленных пользователем. –