2009-05-05 6 views
0

Le code ci-dessous ne semble pas fonctionner ou trouver quelque chose sur un tableau. J'utilise "in_array" pour chercher l'aiguille dans la pile. J'ai également essayé d'exploser le contenu avec des virgules séparées et ne fonctionnera pas. Aucune suggestion? J'ai aussi essayé "array_search".Rechercher à l'intérieur du tableau pour la valeur sur une sortie MYSQL

$q4 = "SELECT domain_name,slots_config.bid FROM slots_pid,slots_config,slots_sites 
WHERE slots_config.bid=slots_pid.bid && slots_sites.aid=slots_pid.aid"; 
$result4 = mysql_query($q4); 

while($row = mysql_fetch_array($result4)) 
{ 
    $resultarray[] = $row; 
} 


if (in_array("test",$resultarray)) 
    { 
    echo "Match found"; 
    } 
else 
    { 
    echo "Match not found"; 
    } 

Répondre

0

in_array() ne fonctionnera pas avec ce genre de tableau, car il est multidimensionnel.

Votre tableau ressemble à ceci:

$resultarray[0]['domain_name'] = 'first row domain name'; 
$resultarray[0]['bid'] = 'first row bid'; 
$resultarray[1]['domain_name'] = 'second row domain name'; 
... 

Vous ne pouvez pas utiliser in_array() pour rechercher dans ce, vous devrez le faire avec une autre méthode, quelque chose comme une boucle sur le tableau, ou la construction d'$resultarray différemment.

De même, array_search() ne fonctionne pas sur les tableaux multidimensionnels, donc vous pouvez faire quelque chose comme boucler sur la première dimension et array_search() -ing chaque seconde dimension. Faites-moi savoir si vous voulez plus de détails.

+0

Hey je peux avoir plus de détails s'il vous plaît je pense aussi que ce sera une solution à ce problème. http://stackoverflow.com/questions/14539649/php-how-to-check-2-statements-to-only-send-one-message-no-duplicates- entre/14556666 # 14539663 –

2

Il semble que ce que vous avez ici soit un 'tableau de tableaux'. Autrement dit, dans votre boucle while(), $ row est un tableau qui correspond aux données de votre requête mysql. Donc, chaque élément de $ resultarray contient en fait un tableau plutôt qu'une chaîne.

Essayez de le faire: print_r($resultarray). Cela affichera la structure entière de $ resultarray, et vous pouvez voir comment vous créez un tableau de tableaux.

Pour utiliser in_array, vous woul besoin de faire quelque chose de semblable à in_array("test", $resultarray[0])

+2

print_r, var_dump are tes amis. Comprendre vos données est plus rapide que d'essayer toutes les différentes fonctions PHP une par une. – garrow

0
$q4 = "SELECT domain_name,slots_config.bid FROM slots_pid,slots_config,slots_sites 
WHERE slots_config.bid=slots_pid.bid && slots_sites.aid=slots_pid.aid"; 
$result4 = mysql_query($q4); 

while($row = mysql_fetch_array($result4)) 
{ 
    if (in_array("test",$row)) 
    { 
    echo "Match found"; 
    } 
    else 
    { 
    echo "Match not found"; 
    } 
} 
0

Je crois que le problème que vous rencontrez est que ce in_array ne recherche que la première dimension de votre réseau en deux dimensions. Je ne comprends pas non plus pourquoi vous chargez le résultat entier dans un tableau avant de lancer une recherche (mais c'est peut-être utile ailleurs dans votre programme).

Essayez:

$found = false; 
while($row = mysql_fetch_array($result4)) 
{ 
    if (in_array($needle, $row){ 
     print "here it is"; 
     $found = true; 
     break; 
} 

if (!$found) { 
     print "not found"; 
} 
Questions connexes