- Home
- Categorie
- Coding e Sistemistica
- PHP
- Riconoscimento valori in array
-
Riconoscimento valori in array
Buonasera a tutti. Vorrei proporvi un mio problema molto fastidioso per il semplice motivo che la sua risoluzione mi sembra molto sciocca ma non riesco a venirne a capo. Mi spiego meglio postando dapprima il codice:
[PHP]
while($righe=mysql_fetch_row($miaquery)){
$risultato[]=$righe;} //Prima costruisco un array dai valori presi dal db.
[/PHP]Preciso che il risultato con il print_r($risultato) appena creato è qualcosa del genere:
Array ( [0] => Array ( [0] =>// Valore primo elemento ricavato dal db. ) [1] => Array ( [0] =>// Valore secondo elemento dal db ) )
Il codice prosegue. Eccone il pezzo: [PHP]
$id=ElementoPresoDalDB; //Volutamente assegno ad una variabile il valore CHE SO PER CERTO che si ricava dal mysql_fetch_row().
//A questo punto voglio vedere se questa variabile appena assegnata sia nell'array creato. Per una maggiore sicurezza stampo gli elementi dell'array così:
foreach($risultato as $elemento){
$elemento= implode($elemento); //Questo per ovviare all'errore di conversione in stringa a partire da PHP 5.4 (se non erro)
echo "<br />".$elemento. "<br />";}// In questo modo HO gli elementi che ho estratto dal db. Adesso prova finale. Uso in_array() per verificare la presenza di $id nell'array $risultato:
if(in_array($id,$risultato)){
echo "L'elemento è nell'array";
}else{
echo "L'elemento non è nell'array";}[/PHP]
E woilà... magia delle magie..... mi compare il risultato dell'else! -.- Ma io dico: come è possibile! Non trovo una spiegazione plausibile a questo. Cio che mi lascia dubbioso è il risultato del print_r() citato sopra. Quell'array-multidimensionale non tanto mi convince
Spero sappiate darmi una mano. Ringrazio coloro che vorrano aiutarmi, anticipatamente
-
Ciao icex,
puoi postare, senza modificare, gli output di:
[php]
print_r($risultato);
print_r($id);
[/php]
-
Grazie della risposta Thedarkita! Allora per quanto riguarda il primo** print_r()** il risultato è praticamente quello che ho scritto sopra però tutto su una sola riga. Per quanto riguarda il secondo, non c'è niente di ché da vedere dato che è semplicemente un numero intero (cioè il mysql_fetch_row($miaquery) restituisce l'array $risultato composto da valori come 1,2,3 ecc.).
In ogni caso, sono riuscito ad ovviare a questo semplice problema scrivendo:
[PHP]if(in_array(array($id),$risultato)){
echo "L'elemento è nell'array";
}else{
echo "L'elemento non è nell'array";}
[/PHP]Questo in virtù dell'array multidimensionale Adesso però vorrei capire una cosa. Qui non so proprio come fare.
Vorrei utilizzare la funzione array_search() (è questo il mio vero scopo ) per cercare nell'array $risultato i valore $id. In questo modo mi verrà restituita la chiave corrispondente se tale valore è presente nell'array.
Cosa voglio fare? Semplice (teoricamente :?): assegnare un current() alla chiave corrispondente in maniera tale che con un **next()**possa recuperare la key successiva.Spero di non aver chiesto troppo e di non aver toccato la sfera delle stupidaggini grazie della disponibilità
-
Or bene mi sa tanto che sono arrivato ad una conclusione. Problema semplice. Risoluzione altrettanto. Pensavo a qualcosa di più controverso a dir la verità.
Posto nella speranza che possa essere di aiuto a qualcuno:[PHP]
$key=array_search(array($id),$risultato); //Ricavo la chiave corrispondente al valore $id nell'array $risultato con la funzione array_search()
$valorecorrente=implode($risultato[$key]);// Permettiamo di convertire la stringa per gli ultimi PHP (permettetemelo di dire che è una rogna sta' cosa però >.< )
$valorecorrente = current($risultato[$key]); // Assegno la variabile precedentemente dichiarata alla funzione current, facendo attenione a passarle come parametro l'array $risultato con l'indice $key
echo $valorecorrente; // Mi restituirà il valore corrispondente ad $id, con la differenza che questa volta sta leggendo l'array e non la variabile!
$valoresuccessivo = implode(next($risultato)); // Solita storia della conversione della stringa, con la differenza che ci passo come parametro la funzione next() avente a sua volta come parametro l'array $risultato (senza la [$key] però!!!)
echo "<br />".$valoresuccessivo; //Stampo a video il risultato e....[/PHP].... ecco qua! Giochetto finito So che può sembrare una cosa sciocca ma ieri sera ero entrato proprio in loop (a proposito di programmazione)
Vabbè, a parte la freddura, spero che questa piccola procedura (che spero sia commentata a dovere) sia di aiuto a qualche povero sventurato
Alla prossima raga!