Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: array_keys Chiarimenti

  1. #1

    array_keys Chiarimenti

    Buongiorno a tutti.Ho bisogno di capire come funziona di preciso la funzione array_keys.
    Ho realizzato il seguente script:
    codice:
    <?php
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[] = "0E4635";
    $arr[]= "0E6489";
    $arr[]= "0E6489";
    $arr[]= "0E6489";
    $arr[]= "0E6489";
    $search = "0E6489";
    $chiavi = array_keys($arr,$search);
    print_r($chiavi);
    ?>
    L'output a video dovrebbe essere l'array delle chiavi relative alla solo pattern 0E6489 o sbaglio?

    il mio output si presenta cosi:
    codice:
    Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 10 [11] => 11 [12] => 12 )
    Qualcuno saprebbe spiegarmi il perche?

    Ciao e grazie

  2. #2
    perche' dovresti cercare un valore e non una chiave (indice). Siccome la chiave cercata non esiste rende tutte le chiavi.

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

  3. #3
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    Se hai php4 devi castare (nel caso che hai postato) string

    $arr[] = (string)"0E4635";

    Con php5 basta mettere il terzo parametro true
    $chiavi = array_keys($arr,$search,true);
    ...altri 5 anni di purga...

  4. #4
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    Anzi ti dirò che senza terzo parametro non conta niente castare.
    è quello 0 davanti che da fastidio.

    Sinceramente non riesco a capire come mai.
    ...altri 5 anni di purga...

  5. #5
    Originariamente inviato da alpeweb
    Anzi ti dirò che senza terzo parametro non conta niente castare.
    è quello 0 davanti che da fastidio.

    Sinceramente non riesco a capire come mai.
    perche' dovresti cercare un valore e non una chiave (indice). Siccome la chiave cercata non esiste rende tutte le chiavi.

    e 2.

    .. array_keys cerca una chiave.

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

  6. #6
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    Ok ..
    spiegami questo perchè io non l'ho capito.


    $array = array(0943241, 0943241, 0943241, 0943244, 0943244);
    print_r(array_keys($array, 0943241));
    questo stampa
    Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 )



    $array = array(943241, 943241, 943241, 943244, 943244);
    print_r(array_keys($array, 943241));
    e questo
    Array ( [0] => 0 [1] => 1 [2] => 2 )

    ...altri 5 anni di purga...

  7. #7
    la differenza e' tra una chiave ed un valore associato alla chiave.

    edit: il primo con lo 0 davanti viene considerato numero ottale.

    non avevo raccolto la differenza.

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

  8. #8
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    e poi credo che la funzione restituisca le chiavi in cui trova il match con il valore cercato.

    Quindi in realtà cerchi i valori e non le chiavi.
    e 2.
    ...altri 5 anni di purga...

  9. #9
    Originariamente inviato da alpeweb
    e poi credo che la funzione restituisca le chiavi in cui trova il match con il valore cercato.

    Quindi in realtà cerchi i valori e non le chiavi.
    e 2.
    hai pure ragione perche' mentalmente ero fissato su array_key_exists

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

  10. #10
    Ragazzi ho provato cosi
    codice:
    <?php
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[] = (string)"0E4635";
    $arr[]= (string)"0E6489";
    $arr[]= (string)"0E6489";
    $arr[]= (string)"0E6489";
    $arr[]= (string)"0E6489";
    $search = "0E6489";
    $chiavi = array_keys($arr,$search);
    print_r($chiavi);
    ?>
    Ma non camnia nulla!!!

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.