Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    strano comportamento di in_array

    ho un in_array che mi sta facendo disperare. So che la funzione non cerca in più livelli di profondità, ma il dato che interessa sta nel primo livello, quindi dovrebbe funzionare, no?
    io ho un'array così strutturato (risultato del print_r):
    codice:
    Array
    (
        [265358] => Array
            (
                [mod.1] => Array
                    (
                        [0] => Basic Line
                        [1] => Verniciato in colori a richiesta
                        [2] => 500,00 €
                    )
    
                [mod.2] => Array
                    (
                        [0] => Executive Line
                        [1] => Verniciato
                        [2] => 690,00 €
                    )
    
                [mod.3] => Array
                    (
                        [0] => Executive Line
                        [1] => Verniciato con oleoresina trasparente
                        [2] => 1000,00 €
                    )
    
            )
    
    
            [230664] => Array
              (
                [mod.1] => Array
                    (
                        [0] => Basic Line
                        [1] => Verniciato in colori a richiesta
                        [2] => 2600,00 €
                    )
    
                [mod.2] => Array
                    (
                        [0] => Executive Line
                        [1] => Verniciato
                        [2] => 3370,00 €
                    )
    
                [mod.3] => Array
                    (
                        [0] => Executive Line
                        [1] => Verniciato con oleoresina trasparente
                        [2] => 3920,00 €
                    )
    
            )
    ...)
    e poi ho piazzato un controllo del genere:
    Codice PHP:
    if (!in_array($codice,$arrayMobili)){
        die( 
    "il codice [b]{$codice}[/b] dell'articolo non risulta regstrato nel nostro gestionale" );

    e il risultato che ne ho è la scritta:
    il codice 230664 dell'articolo non risulta regstrato nel nostro gestionale
    nonostante, potete ben vedere il codice esista.

    Quindi, pensando che il problema fosse la funzione in_array, ho preso ed applicato quest'altra funzione da php.net:
    Codice PHP:
    function deep_in_array($value$array$case_insensitive false){
       foreach(
    $array as $item){
           if(
    is_array($item)) $ret deep_in_array($value$item$case_insensitive);
           else 
    $ret = ($case_insensitive) ? strtolower($item)==$value $item==$value;
           if(
    $ret)return $ret;
       }
       return 
    false;

    ma le cose non cambiano! il risultato è sempre negativo

    la variabile $codice la recupero da una sessione, ed è valorizzata correttamente, altrimenti non la vedrei nemmeno nel die(), quindi non saprei quale altro problema ci sia.




    Sapete darmi una mano? Grazie mille a tutti!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    in_array() trova valori, non le chiavi...

    prova con array_key_exists() o key_exists() ....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    in_array() trova valori, non le chiavi...

    prova con array_key_exists() o key_exists() ....
    sono un idiota!


    ci stavo perdendo tempo e non avevo realizzato che era una chiave e non un valore quello che andavo a cercare!






    Grazie mille!





    p.s. come mai mi è sparito il tag?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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 © 2025 vBulletin Solutions, Inc. All rights reserved.