Visualizzazione risultati 1 fino 3 di 3
Like Tree1Likes
  • 1 Post By programmazioned

Discussione: Associare valore duplicato ad array

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,224

    Predefinito Associare valore duplicato ad array

    Buonasera cari.
    Sarà la stanchezza, sarà il poco stimolo ma non riesco in una bandalità:

    Due array:

    Codice PHP:
    $a = array('123b' => '45.00''654' => '16');
    $b = array('658c' => '0''6511' => '45.99''123b' => '12'); 
    Come potete vedere c'è un valore in comune 123b. Necessito che gli array vengano combinati e che richiamando il valore 123b abbia entrambe le voci.

    Ovvero, questo output:

    Codice:
    '123b' => array( [0] => 45.00 [1] => 12 )
    '654' => array( [0] => 16 )
    '658c' => array( [0] => 0 )
    '6511' => array( [0] => 45.99 )
    Un caffè al primo che mi risolve questa stupidaggine
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    17,566

    Predefinito

    Se vuoi un array in uscita ($c), non so se ti va bene una cosa come:
    Codice PHP:
    <?php
    $a 
    = array('123b' => '45.00'"654" => '16'); 
    $b = array('658c' => '0'"6511" => '45.99''123b' => '12');

    foreach(
    $a as $chiave=>$valore)
    {
        if(isset(
    $b[$chiave]))
            
    $c[$chiave] = array($valore,$b[$chiave]);
        else
            
    $c[$chiave] = $valore;
    }

    foreach(
    array_diff_key($b,$c) as $chiave=>$valore)
    {
        
    $c[$chiave] = $valore;
    }
    Se vuoi che tutti i valori di $c contengano array, devi solo modificare le righe:
    Codice PHP:
    $c[$chiave] = $valore


    Ciao!
    Ultima modifica di alemoppo : 14-11-2018 alle ore 22.50.52

  3. #3
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Codice PHP:
    foreach($a as $k => $v)
            
    $c[$k][] = $v;

    foreach(
    $b as $k => $v)
            
    $c[$k][] = $v
    Ci sarebbe anche la già pronta array_merge_recursive, ma sovrascrive le chiavi numeriche:
    Codice:
    '123b' => array(0 => 45.00, 1 => 12)
    0 => 16
    '658c' => 0
    1 => 45.99
    però nel caso avessi esclusivamente stringhe andrebbe bene.

    Ciao!
    Ultima modifica di programmazioned : 15-11-2018 alle ore 00.50.48
    alemoppo likes this.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •