Arrayeintrag suchen und als Referenz zurückliefern :-)

Arrayeintrag suchen und als Referenz zurückliefern :-)

am 19.09.2006 12:06:24 von Jens Schneider

Hallo @all,

also ich möchte mit der Funktion

function &array_key($Id, &$Arr) {
if ( array_key_exists($Id, $Arr)) {
$offset = & $Arr[$Id];
return $offset;
}
foreach ($Arr as $key) {
if (is_array($key) ) {
$work = & array_key($Id, $key);
if (!is_Bool($work)) return $work;
}
}
return FALSE;
}

$res = & array_key('blabla',$BLABLAS);

ein Array durchsuchen lassen und die Fundstelle als Referenz zurück geben
lassen. ABER irgendwie liefert die Funktion nur den hinter dem Eintrag
gespeicherten Wert, aber nicht die Referenz auf den Eintrag selbst.
Ha jemand vielleicht eine Idee wo der Fehler sich darin verstekcne könnte?
Danke
Grussel
Jens

Re: Arrayeintrag suchen und als Referenz zurückliefern:-)

am 20.09.2006 10:54:27 von Knut Kohl

Hallo Jens,

Jens Schneider schrieb am 19. Sep 2006 in de.comp.lang.php.misc:

> Hallo @all,

> also ich möchte mit der Funktion

> function &array_key($Id, &$Arr) {
> if ( array_key_exists($Id, $Arr)) {
> $offset = & $Arr[$Id];
> return $offset;
> }
> foreach ($Arr as $key) {

Wie beschreibe ich das am Besten...
Du übernimmst nach array_key den Pointer auf $Arr per &
im Foreach ... as erhälst Du aber eine KOPIE des Array-Wertes, welches
Du dann rekursiv übergibst.
D.h. wenn Du in irgendeiner Tiefe der Rekursion einen Treffer landest,
gibst Du einen Pointer als vermeindlichen Treffer zurück, der auf einen
Speicher zeigt, der überhaupt nichts mit den ursprünglichen Array zu tun
hat!

Wenn man mit &Pointern arbeitet, dann aber konsequent!

foreach ($Arr as $aid => $key) {

> if (is_array($key) ) {

$work = & array_key($Id, &$Arr[$aid]);
~~~~~~~~~~~

> if (!is_Bool($work)) return $work;
> }
> }
> return FALSE;
> }

> $res = & array_key('blabla',$BLABLAS);

> Danke

gern doch

> Grussel
> Jens

Knut

--

Newsoffice.de - Die Onlinesoftware zum Lesen und Schreiben im Usenet

Re: Arrayeintrag suchen und als Referenz zurückliefern :-)

am 20.09.2006 13:51:34 von Jens Schneider

Hallo Knut,
ein riesiges Danke.
Auch wenn es funzt, wie man so schön sagt, so hab ich
jetzt ein Problem mit "allow_call_time_pass_reference".
Du hast nicht zufällig auch eine Lösung für diese "Warnung" (ich bin fast
verlegen zu sagen das es eine Nötigung ist ;-)
Denn wie man es dreht und wendet, aus dem Script heraus kann ich es einfach
nicht abstellen und einfach davon auszugehen das man Zugriff auf die INI
hat, will ich auch nicht.

Danke schon mal im voraus,
Grussel Jens


"Knut Kohl" schrieb im
Newsbeitrag news:1158742467.35@user.newsoffice.de...
> Hallo Jens,
>
> Jens Schneider schrieb am 19. Sep 2006 in de.comp.lang.php.misc:
>
> > Hallo @all,
>
> > also ich möchte mit der Funktion
>
> > function &array_key($Id, &$Arr) {
> > if ( array_key_exists($Id, $Arr)) {
> > $offset = & $Arr[$Id];
> > return $offset;
> > }
> > foreach ($Arr as $key) {
>
> Wie beschreibe ich das am Besten...
> Du übernimmst nach array_key den Pointer auf $Arr per &
> im Foreach ... as erhälst Du aber eine KOPIE des Array-Wertes, welches
> Du dann rekursiv übergibst.
> D.h. wenn Du in irgendeiner Tiefe der Rekursion einen Treffer landest,
> gibst Du einen Pointer als vermeindlichen Treffer zurück, der auf einen
> Speicher zeigt, der überhaupt nichts mit den ursprünglichen Array zu tun
> hat!
>
> Wenn man mit &Pointern arbeitet, dann aber konsequent!
>
> foreach ($Arr as $aid => $key) {
>
> > if (is_array($key) ) {
>
> $work = & array_key($Id, &$Arr[$aid]);
> ~~~~~~~~~~~
>
> > if (!is_Bool($work)) return $work;
> > }
> > }
> > return FALSE;
> > }
>
> > $res = & array_key('blabla',$BLABLAS);
>
> > Danke
>
> gern doch
>
> > Grussel
> > Jens
>
> Knut
>
> --
>
> Newsoffice.de - Die Onlinesoftware zum Lesen und Schreiben im Usenet
>

Re: Arrayeintrag suchen und als Referenz zurückliefern :-)

am 20.09.2006 14:16:31 von Niels Braczek

Jens Schneider schrieb:

Lies bitte http://learn.to/quote.

> Auch wenn es funzt, wie man so schön sagt, so hab ich
> jetzt ein Problem mit "allow_call_time_pass_reference".

Ist auch eine schlechte Lösung.

> Du hast nicht zufällig auch eine Lösung für diese "Warnung" (ich =
bin fast
> verlegen zu sagen das es eine Nötigung ist ;-)
> Denn wie man es dreht und wendet, aus dem Script heraus kann ich es ein=
fach
> nicht abstellen und einfach davon auszugehen das man Zugriff auf die IN=
I
> hat, will ich auch nicht.

>> $work =3D & array_key($Id, &$Arr[$aid]);

$work =3D & array_key($Id, $Arr[$aid]);

tut's völlig.

MfG
Niels

--=20
| 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 =
|
------------------------------------------------------------ ------

Re: Arrayeintrag suchen und als Referenz zurückliefern :-)

am 21.09.2006 10:46:22 von Jens Schneider

.... danke für d(ie)en hinweis(e) ...