Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407

    corrispondenza tra due array

    ciao, ho un problema che forse è stupidissimo:

    ho due array, 'originale' ed 'effettivo', contenente dei numeri.
    Solitamente sono due array identici, ma l'utente può scegliere di variarne uno e solo uno della composizione 'effettivo', quindi, se inizialmente i miei array sono:
    Codice PHP:
    $originale = Array(123);
    $effettivo = Array(123); 
    dopo le varie scelte dell'utente potrei avere il secondo array differente di un elemento:

    Codice PHP:
    $originale = Array(123);
    $effettivo = Array(124); 
    Ora, il mio problema è che per quella variazione, confrontando i due array, dovrei risalire al numero che è stato sostituito.. cioè so si che il numero sostituito è 4, ma devo sapere anche che ha preso il posto di 3.

    pensavo di confrontare il primo e il secondo tramite foreach e in_array, ma così riuscirei a sapere solo quale è variato, non di quale ha preso il posto..

    idee?

    edit: dimenticavo, devo partire listando l'array 'effettivo', perchè è quello che poi dovrò utilizzare veramente nello script
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

  2. #2
    Studiati questo codice:

    Codice PHP:
    <pre>
    <?php 
    $originale 
    = array(123);
    $effettivo = array(124);

    $result array_values(array_diff($originale$effettivo));
    var_dump($result);

    $result array_values(array_diff($effettivo$originale));
    var_dump($result);
    ?>
    </pre>

  3. #3
    Utente di HTML.it L'avatar di strae
    Registrato dal
    Apr 2008
    Messaggi
    407
    Originariamente inviato da filippo.toso
    Studiati questo codice:

    Codice PHP:
    <pre>
    <?php 
    $originale 
    = array(123);
    $effettivo = array(124);

    $result array_values(array_diff($originale$effettivo));
    var_dump($result);

    $result array_values(array_diff($effettivo$originale));
    var_dump($result);
    ?>
    </pre>
    grandioso, funziona.
    se ho capito bene il sistema, li compari con array_diff, prima 'a' con 'b', poi 'b' con 'a', così restituisce per forza di cose il valore differente...

    io avevo 'pezzato' lo script così:
    Codice PHP:
    $sostituzione false;
    $originale = Array('A''B''C');
    $effettivo = Array('A''B''M');
    foreach(
    $originale AS $keyO => $o){
        if(
    in_array($o$effettivo)){
            
    $t array_search($o$effettivo);
            unset(
    $effettivo[$t]);
        }else{
            
    $sostituzione $o;
        }

    funzionare funziona, ma mi sembra più professionale la tua soluzione

    grazie per l'aiuto!
    You HAVE to assume your visitor is a maniac serial killer, out to destroy your application. And you have to prevent it.
    I can accept failure, everyone fails at something - But I can't accept not trying.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.