Dividir una fila de tabla SQL en variables php
Frecuentes
Visto 404 veces
-1
Tengo una fila en mi tabla que se muestra como tal;
2:2/3:1/17:1/6:1/1:1/
Me pregunto cómo podría almacenarlos en variables php para poder mostrárselos al usuario. El '/' separa los elementos y el ':' separa las partes del elemento.
No sé si eso tiene sentido, pero es así;
itemID:quantity/itemID:quantity/itemID:quantity/
Así que quiero separar los artículos y luego almacenar el ID del artículo y la cantidad en variables para mostrar al usuario.
He intentado usar la función de explosión;
$pieces = explode("/", $order_details);
Pero no sé cómo separar el itemID y la cantidad.
¿Alguna ayuda?
2 Respuestas
1
$pieces = explode("/", rtrim($order_details, '/'));
$items = array();
foreach ($pieces as $piece)
{
list($id, $qty) = explode(':', $piece);
$items[$id] = $qty;
}
contestado el 22 de mayo de 12 a las 15:05
Muchas gracias. ¿Cómo haría para configurarlo de modo que id = $id y quanity = $qty? - user1394849
Simplemente elimine la segunda línea del ciclo foreach. - John Conde
Gracias eso funciona perfectamente. Una cosa más, ¿hay alguna forma de ignorar el último '/' que está al final de la cadena? Recibo un error porque está buscando el ':' en el último elemento, pero no hay ninguno. - user1394849
Simplemente quítelo usando substr()
or rtrim()
. Vea mi respuesta actualizada para ver un ejemplo. - John Conde
Eres un verdadero caballero, amigo. Gracias. - user1394849
1
Aprovechar parse_str.
<?php
$str = '2:2/3:1/17:1/6:1/1:1/';
$str = str_replace(array(':', '/'), array('=', '&'), $str);
parse_str($str, $vars);
/*
$vars now:
Array
(
[2] => 2
[3] => 1
[17] => 1
[6] => 1
[1] => 1
)
*/
Si es posible, almacene el valor en su tabla como matriz serializada.
contestado el 22 de mayo de 12 a las 15:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php sql variables explode or haz tu propia pregunta.
Si normaliza su base de datos, no tendrá problemas como este: John Conde
Creo que puede repetir la explosión en cada pieza, usando explotar(":", pieza. Sin embargo, parecería que la estructura de su base de datos debería tener una fila separada para cada artículo y cantidad, en lugar de combinarlos todos en una sola cadena. - Gordon Linoff