Usando CakePHP 2.0 aquí. El título es un poco engañoso, así que para aclarar las cosas, tengo una matriz de sesión que se llena con los identificadores de los productos a medida que el usuario los agrega al carrito. Entonces esta matriz va como [0] => 25, [1] => 70 etc. Digamos que esta matriz se llama $ products.Cómo ordenar una matriz conservando su estado inicial
Lo que quiero preguntar es si hay alguna posibilidad de que la matriz se obtenga utilizando la función 'find' del modelo ('condiciones' => matriz ('Product.id' => $ products)) para ordenar por algunos valores de Model.field (como en la opción 'order'), pero por $ products array indices, de modo que cuando visualice el contenido de los productos, obtendría todos esos productos en el carrito ordenados en la secuencia en que el usuario los estaba agregando .
He aquí un ejemplo - Sesión array $ productos:
[0] => 35,
[1] => 15,
[2] => 25
Luego paso esta matriz a las condiciones de función de búsqueda:
$list = $this->Product->find('all', array('conditions' => array('Product.id' => $products)));
En la lista final $ me da gama, que ordenadas según ID del Producto. Así que en lugar de tener:
[0] => Array
(
[Product] => Array
(
[id] => 35)),
[1] => Array
(
[Product] => Array
(
[id] => 15)),
[2] => Array
(
[Product] => Array
(
[id] => 25))
me sale:
[0] => Array
(
[Product] => Array
(
[id] => 15)),
[1] => Array
(
[Product] => Array
(
[id] => 25)),
[2] => Array
(
[Product] => Array
(
[id] => 35))
Hasta ahora todas las respuestas no resuelve mi problema. Por favor, presten más atención al ejemplo que di, es muy simple, pero las respuestas proporcionadas son en clave diferente.
Una vez más, necesito gama lista definitiva $ que ser resuelto por los índices de matriz sesión $ productos, pero me da lista $ ordenados por el campo Product.id, a pesar de que no se hayan indicado ningún 'find(array('order'=> ...))'
en absoluto e incluso trató de establecerlo en falso.
no puede entender la pregunta, pero supongo que esto puede ayudar ... no se puede ordenar una matriz conservando su estado inicial (porque lo ordenó), pero podría almacenarlo dos veces o incluso mejor, podría almacenar almacenar los índices de la matriz en su estado inicial, para que pueda ordenar la matriz como lo hizo en su estado inicial (o viceversa) siempre que lo desee. $ initial_state_indexes = array_keys ($ the_array); –
De acuerdo, la pregunta es un poco vaga ... Trate de aclarar su punto con el código o llegar desde un ángulo diferente – mseancole
No estoy usando 'orden' en absoluto.Como dije, session array $ products contiene ids de productos en los que los índices (de [0] y así sucesivamente) representan la secuencia de productos añadidos por el usuario. –