J'ai un site de commerce électronique PHP/MySQL qui place des informations détaillées sur les commandes dans un tableau sérialisé à côté de l'adresse du client. Je veux être en mesure de sortir le champ des articles de commande, de le désérialiser puis de combiner les articles de la commande en un tableau principal de TOUS les articles commandés qui peuvent être manipulés afin de compter le nombre de commandes d'un produit spécifique. fabriqué.Désérialisation de MySQL dans un tableau PHP multidimensionnel
Les tableaux ressemblent à ceci lorsque j'imprime les lignes non sérialisées. Voici deux tableaux de commande, un avec 3 produits, et le second avec un seul. Les valeurs du tableau sont ID #, SKU #, Quantity, Product Name, Price. Je veux être capable de combiner TOUT ordre en un seul tableau, puis additionner les quantités totales pour chaque ID unique ou numéro de SKU.
Je me rends compte que ce type de chose est très simple si les données étaient propres dans MySQL, mais c'est la vie. Toutes les pensées sur la façon de manipuler ces tableaux seraient vraiment appréciées.
Dans ce cas, veulent se retrouver avec 4 tableaux, avec les 629/01-3600 ceux étant combinés de telle sorte que la valeur de quantité est maintenant 2
Un grand merci.
Array
(
[0] => Array
(
[1] => 488
[5] => 23-1000
[2] => 3
[3] => PRODUCT NAME
[4] => 2.50
)
[1] => Array
(
[1] => 423
[5] => 24-2300
[2] => 1
[3] => PRODUCT NAME
[4] => 3.50
)
[2] => Array
(
[1] => 506
[5] => 23-2800
[2] => 1
[3] => PRODUCT NAME
[4] => 2.50
)
[3] => Array
(
[1] => 629
[5] => 01-3600
[2] => 1
[3] => PRODUCT NAME
[4] => 7.50
)
)
Array
(
[0] => Array
(
[1] => 629
[5] => 01-3600
[2] => 1
[3] => PRODUCT NAME
[4] => 7.50
)
)
EDIT:
Je voulais ajouter ce qui est finalement fait ce que je cherchais
foreach($query->result as $row)
{
$items[] = unserialize($row['FIELDNAME']);
}
foreach($items as $item)
{
foreach($item as $order)
{
if(isset($output_array[$order[1]]))
{
$output_array[$order[1]]['quantity'] += $order[2];
}
else
{
$output_array[$order[1]] = array (
'name' => $order[3],
'quantity' => $order[2],
'sku' => $order[5]
);
}
}
}
J'ai ensuite utilisé cette fonction de tri pour trier la quantité: http://www.php.net/manual/en/function.sort.php#99419
Au-delà, merci Baylor Rae. – noahkuhn
En fait, même si je sais que cela fonctionnera éventuellement. J'exécute une boucle foreach ($ result as $ row) afin de retirer les champs sérialisés et de les désérialiser. Afin de fusionner dire cent rangées, je devrais créer une nouvelle variable chaque fois que je boucle à droite? Puis combiner toutes les centaines en utilisant array_merge? – noahkuhn
J'ai ajouté une modification à mon code (en bas) qui donne un exemple sur la façon de placer les éléments dans les variables $ skus et $ ids. –