Re: Array durchmischen und paarweise ausgeben

Re: Array durchmischen und paarweise ausgeben

am 18.10.2004 16:36:37 von Daniel Jaenecke

Peter Wittenberger wrote:

> ich möchte alle ID's einer DB-Tabelle in ein
> Array stecken, via Zufall durchschütteln und
> paarweise ausgeben:

Nach welchem Kriterium kommen die Paare zustande?

> Ist der Weg über das SQL-Statement "SELECT id .... ORDER BY RAND()"
> sinnvoll?
> Oder die php-Funktion rand().

Vorausgesetzt die Paarbildung ist in SQL machbar solltest Du Deiner DB das
durchschütteln überlassen.
Wenn Du die Werte in PHP in zufälliger Reihenfolge ausgeben willst müsstest
Du sie ja zunächst in ein Array lesen, das dann zB mittels shuffle()
durcheinanderwürfeln und dann nochmal durchlaufen, um es auszugeben.


-dj-

--
1. Man gewoehnt sich an allem, sogar am Dativ.
2. Der Dativ ist dem Genitiv sein Tod.

Array durchmischen und paarweise ausgeben

am 18.10.2004 16:43:10 von Peter Wittenberger

Hallo NG,

ich möchte alle ID's einer DB-Tabelle in ein
Array stecken, via Zufall durchschütteln und
paarweise ausgeben:

id / id
12 / 57
5 / 22

Ist der Weg über das SQL-Statement "SELECT id .... ORDER BY RAND()"
sinnvoll?
Oder die php-Funktion rand().

Könntet Ihr mir auf die Sprünge helfen?

Danke,
Peterle

Re: Array durchmischen und paarweise ausgeben

am 19.10.2004 08:53:42 von Peter Wittenberger

"Daniel Jaenecke" schrieb im Newsbeitrag
news:cl0kdm$d26$02$1@news.t-online.com...
> Peter Wittenberger wrote:
>
> > ich möchte alle ID's einer DB-Tabelle in ein
> > Array stecken, via Zufall durchschütteln und
> > paarweise ausgeben:
>
> Nach welchem Kriterium kommen die Paare zustande?

Kein Kriterium. Zufallspaarungen.



> > Ist der Weg über das SQL-Statement "SELECT id .... ORDER BY RAND()"
> > sinnvoll?
> > Oder die php-Funktion rand().
>
> Vorausgesetzt die Paarbildung ist in SQL machbar solltest Du Deiner DB das
> durchschütteln überlassen.

Finde bis jetzt kein Statement in SQL für diese Paarbildung. Wäre dann eine
Mischung
mit dem SQL Statement RAND() und anschließendem array push über die count()
Funktion
sinnvoll?

Gruss,
's Peterle

Re: Array durchmischen und paarweise ausgeben

am 19.10.2004 10:10:46 von rst

Peter Wittenberger wrote:
> Hallo NG,
>
> ich möchte alle ID's einer DB-Tabelle in ein
> Array stecken, via Zufall durchschütteln und
> paarweise ausgeben:
>
> id / id
> 12 / 57
> 5 / 22

Spontan würde ich vorschlagen:
array_rand() und dann einnerhalb einer Schleife immer schön 2x array_pop().

Spricht was dagegen?

René

Re: Array durchmischen und paarweise ausgeben

am 19.10.2004 14:12:59 von Niels Braczek

Peter Wittenberger schrieb:

> hab nun eine Mischung (RAND() SQL) produziert.
> Funktionieren tut dieser Code. Also alles wird, wie ich es will,
> richtig ausgegeben. Da ich aber lernen möchte, lernen wie man
> es "besser" und "sauberer" codet, bitte ich um Kritik,
> Verbesserungsvorschläge.

Sollst du haben!

> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> CODE
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> $dat1 = mysql_query("SELECT user from o_users order by RAND() limit
> 8");

Hier fehlt die Fehlerbehandlung.

$sqlStr = "SELECT user
FROM o_users
ORDER BY RAND()
LIMIT 8";

$dat1 = mysql_query($sqlStr) or die($sqlStr.'
'.mysql_error());

> $howmuch = mysql_num_rows($dat1);
> $row = round($howmuch/2);
> $nun = array();
> while ($arow = mysql_fetch_array($dat1))
> {
> array_push($nun,"$arow[user]");
> }

Wenn du nur mit assoziativen Indizes arbeiten willst, ist
mysql_fetch_assoc() vorzuziehen. array_push() ist überdimensioniert. Was
sollen die Anführungszeichen bei "$arow[user]"?

while ($arow=mysql_fetch_array($dat1)) {
$nun[] = $arow['user'];
}

> for ($o=1; $o<=$row; $o++)
> {
> print "Game $o: ";
> for ($i=0; $i<1; $i++)
> {
> $aha1 = array_pop($nun);
> $aha2 = array_pop($nun);
> print "$aha1 und $aha2";
> }

Und was passiert bei ungerader Spielerzahl?

> print("
");
> }
>
> Danke nochmals,

Da nich für.

MfG
Niels

--
Eigendlich is n Standart in der Rechtschreibung föllig
egal. Hauptsache is, mann ferstet mich! Ich kapier nur
ned, wiso der PHP-Pharser immer mekert?

Re: Array durchmischen und paarweise ausgeben

am 19.10.2004 15:00:52 von Peter Wittenberger

"René Stach" schrieb im Newsbeitrag
news:cl2i7d$ku0$1@kohl.informatik.uni-bremen.de...
> Peter Wittenberger wrote:
> > Hallo NG,
> >
> > ich möchte alle ID's einer DB-Tabelle in ein
> > Array stecken, via Zufall durchschütteln und
> > paarweise ausgeben:
> >
> > id / id
> > 12 / 57
> > 5 / 22
>
> Spontan würde ich vorschlagen:
> array_rand() und dann einnerhalb einer Schleife immer schön 2x
array_pop().
>
> Spricht was dagegen?
>
> René


Hallo,

hab nun eine Mischung (RAND() SQL) produziert.
Funktionieren tut dieser Code. Also alles wird, wie ich es will,
richtig ausgegeben. Da ich aber lernen möchte, lernen wie man
es "besser" und "sauberer" codet, bitte ich um Kritik,
Verbesserungsvorschläge.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CODE
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$dat1 = mysql_query("SELECT user from o_users order by RAND() limit 8");
$howmuch = mysql_num_rows($dat1);
$row = round($howmuch/2);
$nun = array();
while ($arow = mysql_fetch_array($dat1))
{
array_push($nun,"$arow[user]");
}
for ($o=1; $o<=$row; $o++)
{
print "Game $o: ";
for ($i=0; $i<1; $i++)
{
$aha1 = array_pop($nun);
$aha2 = array_pop($nun);
print "$aha1 und $aha2";
}
print("
");
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Danke nochmals,
Peterle