2009-05-05 11 views
0

Der folgende Code scheint auf einem Array nicht zu funktionieren oder etwas zu finden. Ich benutze "in_array", um nach der Nadel im Stapel zu suchen. Ich habe auch versucht, den Inhalt mit Komma getrennt zu explodieren und wird nicht funktionieren. Irgendwelche Vorschläge? Ich habe auch "array_search" ausprobiert.In Array nach Wert für eine MYSQL-Ausgabe suchen

$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"; 
    } 

Antwort

0

in_array() nicht mit dieser Art von Array arbeiten, weil es mehrdimensionale ist.

Ihr Array sieht wie folgt aus:

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

Sie können nicht in_array() verwenden, dass zu suchen, so dass Sie es mit einer anderen Methode zu tun haben, so etwas wie über das Array Looping oder Gebäude $resultarray anders.

Ebenso funktioniert array_search() nicht auf mehrdimensionalen Arrays, so dass Sie etwas über die erste Dimension und array_search() -ing jede zweite Dimension.

Lassen Sie mich wissen, wenn Sie mehr Details wünschen.

+0

Hey kann ich mehr Details bitte ich denke, auch dies eine Lösung für dieses Problem sein. http://stackoverflow.com/questions/14539649/php-how-to-check-2-statements-to-only-send-one-message-no-duplicates-between/14539663#14539663 –

2

Es sieht so aus, als ob Sie hier eine 'Array von Arrays' haben. Das heißt, in Ihrer while() - Schleife ist $ row ein Array, das den Daten Ihrer mysql-Abfrage entspricht. Daher enthält jedes Element von $ resultarray tatsächlich ein Array und keine Zeichenfolge.

Versuchen Sie Folgendes: print_r($resultarray). Dadurch wird die gesamte Struktur von $ resultarray angezeigt und Sie können sehen, wie Sie ein array-of-arrays erstellen.

verwenden in_array, woul müssen Sie so etwas wie in_array("test", $resultarray[0])

+2

print_r, var_dump sind deine Freunde. Das Verständnis Ihrer Daten ist schneller als die verschiedenen php-Funktionen einzeln zu testen. – 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

ich das Problem, dass es nur haben glauben zu tun ist, in_array die erste Dimension der zweidimensionalen Matrix sucht. Ich verstehe auch nicht, warum Sie das ganze Ergebnis in ein Array laden, bevor Sie suchen (aber vielleicht ist das anderswo in Ihrem Programm nützlich).

Versuchen:

$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"; 
} 
Verwandte Themen