• User Attivo

    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.


  • ModSenior

    Ciao supercapocc,

    non mi sembra ci sia una funzione che faccia ciò direttamente, dovresti fartene una tu.


  • User Attivo

    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 :ciauz:.


  • User Attivo

    Ciao,
    puoi incollarmi il codice che hai usato ho il tuo identico problema


  • User Attivo

    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. :ciauz: