- Home
- Categorie
- Coding e Sistemistica
- PHP
- Combinare due array
-
Combinare due array
Salve a tutti, sto scorrendo tutte le funzioni relative alle array alla ricerca di qualcosa utile al mio caso, ma senza successo.
Allora, io ho due o più array multidimensionali, vi riporto solo le chiavi relative alla questione :
[php]
$cart[] = array('code' => '0001',
'qty' => 1);
$cart[] = array('code' => '0001',
'qty' => 2);
[/php]Io vorrei che il flusso foreach identifichi che all'interno del secondo livello ci sono due chiavi con lo stesso valore, code, e che le unisca sommando i valori della chiave qty, in pratica vorrei che fosse presente solo questo :[php]
$cart[] = array('code' => '0001',
'qty' => 3);
[/php]Grazie.
-
Ciao supercapocc,
non mi sembra ci sia una funzione che faccia ciò direttamente, dovresti fartene una tu.
-
Ok grazie, si ho fatto una funzione personalizzata che richiamo prima della creazione delle array nel secondo livello.
Mi sembrava strano che non esistesse nulla del genere, se si pensa a funzionalità di e-commerce dove l'utente potrebbe aggiornare le quantità di un determinato prodotto precedemente aggiunto al carrello.
Va beh, magari con PHP 6... Ciao .
-
Ciao,
puoi incollarmi il codice che hai usato ho il tuo identico problema
-
Come no ?!
Allora, qui recupero le informazioni dal modulo di acquisto
[PHP]
$code = $_POST['code'];
$qty = $_POST['qty'];
$item = $_POST['item'];
$price = $_POST['price'];
$sizing = ($_POST['sizing']) ? true : false;
$size = isset($_POST) ? (string)$_POST : (int)0;
[/PHP]E qui creo o aggiorno l'array
[PHP] $new = true;
if($qty == 0)
{
header("Location: shopping.php");
exit();
}
$subtotal = $qty * $price;
if(!empty($_SESSION['cart']))
{
foreach($_SESSION['cart'] as $key => $value)
{
if($code === $value['code'] && ($size == $value))
{
$_SESSION['cart'][$key]['qty'] += $qty;
$_SESSION['cart'][$key]['subtotal'] += $subtotal;
$new = false;
}
}
}
if($new == true)
{
$_SESSION['cart'][] = array(
'code' => $code,
'qty' => $qty,
'item' => $item,
'sizing' => $sizing,
'size' => $size,
'subtotal' => $subtotal);
}[/PHP]Il secondo livello dell'array viene aggiornato solo se il codice del prodotto è presente, o se è presente ma la chiave size non coincide con l'input dell'utente.
Mi spiego: se ordino una T-Shirt taglia XL e nel mio carrello c'è una T-Shirt taglia Small, aggiungo una nuova array nel secondo livello. Se ho già una T-Shirt taglia Small nel carrello aggiorno solo la chiave quantità e il sub-totale del prezzo.