• 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: