array_search in zweidimensionalem Array

Hallo,

ich versuche in einem zweidimensionalen Array doppelte Einträge zu
verhindern:

$Zelle[$x][$y]=0;
do {
$dummy=rand(2,9);
$key=array_search($dummy,$Zelle);
} while ($key<>'');
$Zelle[$x][$y]=$dummy;

Aber irgendwie kommen die doch vor. Wo ist mein Denkfehler?
--
Stephan
Stephan Dreisbach [ Do, 31 Januar 2008 17:37 ] [ ID #1921068 ]

Re: array_search in zweidimensionalem Array

Stephan Dreisbach schrieb:

> $key=3Darray_search($dummy,$Zelle);
> Aber irgendwie kommen die doch vor. Wo ist mein Denkfehler?

Du vergleichst eine Zahl mit einem Array.

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Do, 31 Januar 2008 23:55 ] [ ID #1921075 ]

Re: array_search in zweidimensionalem Array

Niels Braczek <nbraczek [at] freenet.de> schrieb:

>Stephan Dreisbach schrieb:
>
>> $key=array_search($dummy,$Zelle);
>> Aber irgendwie kommen die doch vor. Wo ist mein Denkfehler?
>
>Du vergleichst eine Zahl mit einem Array.

Verstehe ich nicht: Ich denke, ich suche eine Zahl, ob die bereits
_in_ einem Array vorkommt.
Stephan Dreisbach [ Fr, 01 Februar 2008 08:16 ] [ ID #1922061 ]

Re: array_search in zweidimensionalem Array

Stephan Dreisbach schrieb:
> Niels Braczek <nbraczek [at] freenet.de> schrieb:
>
>>Stephan Dreisbach schrieb:
>>
>>> $key=3Darray_search($dummy,$Zelle);
>>> Aber irgendwie kommen die doch vor. Wo ist mein Denkfehler?
>>
>>Du vergleichst eine Zahl mit einem Array.
>
> Verstehe ich nicht: Ich denke, ich suche eine Zahl, ob die bereits
> _in_ einem Array vorkommt.


$Zelle ist aber ein Array, dessen Elemente Arrays sind und keine Zahlen.

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Fr, 01 Februar 2008 13:56 ] [ ID #1922072 ]

Re: array_search in zweidimensionalem Array

Stephan Dreisbach schrieb:

> ich versuche in einem zweidimensionalen Array doppelte Einträge zu
> verhindern:
>
> $Zelle[$x][$y]=0;
> do {
> $dummy=rand(2,9);
> $key=array_search($dummy,$Zelle);
> } while ($key<>'');
> $Zelle[$x][$y]=$dummy;
>
> Aber irgendwie kommen die doch vor. Wo ist mein Denkfehler?

Du suchst in einem _mehrdimensionalen_ Array. PHP versteht dieses als
ein Array aus Arrays. array_search() durchsucht aber nur die _erste_
Ebene, vergleicht also die gesuchte Zahl mit den dort vorhandenen Arrays.

Wenn Du (rekursiv) durch alle Ebenen suchen willst, musst Du Dir selber
eine entsprechende Funktion bauen.

Im Übrigen dürfte in_array() für Deinen Zweck besser geeignet sein, löst
aber Dein eigentliches Problem auch nicht.

Gruß. Claus
Claus Reibenstein [ Fr, 01 Februar 2008 18:36 ] [ ID #1922074 ]

Re: array_search in zweidimensionalem Array

Claus Reibenstein <4spammersonly [at] web.de> schrieb:

>Stephan Dreisbach schrieb:
>
[..]
>
>Du suchst in einem _mehrdimensionalen_ Array. PHP versteht dieses als
>ein Array aus Arrays. array_search() durchsucht aber nur die _erste_
>Ebene, vergleicht also die gesuchte Zahl mit den dort vorhandenen Arrays.

Jetzt verstanden, danke.
>
>Wenn Du (rekursiv) durch alle Ebenen suchen willst, musst Du Dir selber
>eine entsprechende Funktion bauen.

Habe ich gemacht und funktioniert.
--
Stephan
Stephan Dreisbach [ Fr, 01 Februar 2008 23:11 ] [ ID #1922076 ]
PHP » de.comp.lang.php.misc » array_search in zweidimensionalem Array

Vorheriges Thema: Kontaktformular funktioniert nicht mit php5 ?
Nächstes Thema: Trennung/Kenntlichmachung von alter und neuer Nachricht in einem html Ausgabe Formular