2009-08-17 13 views
1

Ich habe im Code gesehen arbeite ich an, die folgenden:Äquivalent von jedem() für mysql Ergebnisse, erste Schleife von foreach zu imitieren()

foreach($mysql_result as $row) $site_id = $row->id;

$ mysql_result ist natürlich ein mysql_result, so dass dieser foreach entspricht eine while (mysql_fetch_row())

Manchmal wird das Ergebnis bekannt ist nur eine Zeile zu erhalten, aber der Code immer noch eine „foreach“, so dass es den Eindruck vermittelt eines Wesen Schleife durch viele Zeilen.

Ich habe versucht, mit jedem(), funktioniert aber nicht dafür.

Ich weiß, ich könnte mysql_fetch_row() verwenden, aber der Code sollte DB unabhängig sein, so dass ich nicht DB spezifische Funktionen verwenden kann. Gibt es sowas wie jedes(), das in diesem Fall genauso funktioniert wie die erste Iteration von foreach()?

PS: was ich für Lesbarkeit derzeit tun, ist das vorherige Beispiel dazu drehen: einmal

foreach($mysql_result as $row) break; 
$site_id = $row->id;

So ziemlich offensichtlich es ist, dass die foreach wird nur höchstens Schleife.

Antwort

3

Ich denke, was Sie wollen, anstatt dies:

foreach($mysql_result as $row) $site_id = $row->id; 

Nur soviel:

$site_id = $mysql_result[0]->id; 
-1

Ist das was du willst?

if (1 == count($mysql_result)) 
{ 
    $row = current($mysql_result); 

    // could probably also do this unless the array isn't zero-indexed 
    // $row = $mysql_result[0]; 
} 
+0

Ich denke, Strom() nicht die gleiche Art und Weise each() der Fall ist. Bist du dir sicher? Ich werde es versuchen. – Petruza

0

Wenn Sie nur ein Ergebnis wünschen, brauchen Sie keine Schleife.

$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 
$site_id = $row['id']; 
1

PS: was ich zur Zeit für Lesbarkeit ist die vorherige drehen Beispiel dazu:

foreach ($ mysql_result als $ Zeile) Pause;

Wrap, die in einer Funktion, so ist es klar, dass es eine Reihe bekommt (und sind db unabhängige)

function fetch_single_row($result) 
{ 
    foreach($mysql_result as $row) break; 
    return $row; 
} 

Dann würde der Code aussehen

$row = fetch_single_row($mysql_result); 
$site_id = $row->id; 

Jetzt Sie ‚gewonnen Ich muss mich wundern über all die seltsame foreach (..) Pause; Aussagen über den gesamten Code.

0

Sie Ould eine do-Schleife

$i =0 
do { 
    $site_id = $mysql_result[$i++]->id; 
} while ($i <= 0);