Index aus assoziativem Array auslesen

Hallo,
wie kann ich aus einem assoziativen array den tatsächlichen internen
Index herauskriegen?

Ich habe z.B. ein Array aus einem Formular (für Dateiupload) $_FILES
und weiss dass

$_FILES["attachment_1"]["tmp_name"]

existiert, sowie auch

$_FILES["attachment_2"]["tmp_name"]

und das array auch nur zwei elemente enthält.
Also müsste doch folglich

$_FILES[0]["tmp_name"] und $_FILES[1]["tmp_name"]

funktionieren? Ich kriege aber:

Undefined offset: 0

(bzw. Undefined offset: 1)

Gruss franc
francwalter [ Fr, 21 Dezember 2007 18:51 ] [ ID #1892289 ]

Re: Index aus assoziativem Array auslesen

Franc Walter schrieb:
> wie kann ich aus einem assoziativen array den tatsächlichen internen
> Index herauskriegen?

Kommt drauf an wofür du es brauchst. Wenn das Array durchläufst kannst
ja ein Counter mitlauefen lassen.

> Ich habe z.B. ein Array aus einem Formular (für Dateiupload) $_FILES
> und weiss dass
>
> $_FILES["attachment_1"]["tmp_name"]
>
> existiert, sowie auch
>
> $_FILES["attachment_2"]["tmp_name"]
>
> und das array auch nur zwei elemente enthält.
> Also müsste doch folglich
>
> $_FILES[0]["tmp_name"] und $_FILES[1]["tmp_name"]
>
> funktionieren? Ich kriege aber:

wieso sollte bei einem assoziativem Array gleichzeitig die numerischen
Werte gefüllt sein?

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Fr, 21 Dezember 2007 18:59 ] [ ID #1892290 ]

Re: Index aus assoziativem Array auslesen

> Kommt drauf an wofür du es brauchst. Wenn das Array durchläufst kannst=

> ja ein Counter mitlauefen lassen.

Ich dachte ein Array hat grundsätzlich einen Index und evtl. nur einen
Namen (assoz. Array).

>
> wieso sollte bei einem assoziativem Array gleichzeitig die numerischen
> Werte gefüllt sein?
>

also z.b. mit:
foreach ($$_FILES as $key =3D> $value) {
echo "Schlüssel: $key; Wert: $value
\n";
}
francwalter [ Fr, 21 Dezember 2007 19:13 ] [ ID #1892293 ]

Re: Index aus assoziativem Array auslesen

Franc Walter schrieb:
> Hallo,
> wie kann ich aus einem assoziativen array den tatsächlichen internen
> Index herauskriegen?

Geht so nicht. Wenn Du aber über die Dateien iterieren willst (was ich
vermute), kannst Du array_keys verwenden. Alternativ habe ich kurz das
probiert:

echo <<<EOD
<form method="post" enctype="multipart/form-data">
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="file" name="upload[]" />
<input type="submit" name="send" />
</form>
EOD;

ergibt:

Array
(
[upload] => Array
(
[name] => Array
(
[0] => bild.jpg
[1] =>
[2] =>
)

[type] => Array
(
[0] =>
[1] =>
[2] =>
)

[tmp_name] => Array
(
[0] =>
[1] =>
[2] =>
)

[error] => Array
(
[0] => 1
[1] => 4
[2] => 4
)

[size] => Array
(
[0] => 0
[1] => 0
[2] => 0
)

)

)

--
Mein Zeugs:
http://www.hadanite-marasek.de/classes.php
http://www.objektivsuche.de/
Ansonsten:
http://www.php-faq.de/q/q-newsgroup-wie-helfen.html
Hadanite Marasek [ Fr, 21 Dezember 2007 19:13 ] [ ID #1892294 ]

Re: Index aus assoziativem Array auslesen

> also z.b. mit:
> foreach ($$_FILES as $key => $value) {
> echo "Schlüssel: $key; Wert: $value
\n";
> }

Nimm $keys = array_keys($_FILES), dann bekommst Du

Array
(
[0] => upload_1
[1] => upload_2
[2] => upload_3
)

dann:

foreach($keys as $value) {
echo $_FILES[$value]["tmp_name"];
}
--
Mein Zeugs:
http://www.hadanite-marasek.de/classes.php
http://www.objektivsuche.de/
Ansonsten:
http://www.php-faq.de/q/q-newsgroup-wie-helfen.html
Hadanite Marasek [ Fr, 21 Dezember 2007 19:16 ] [ ID #1892295 ]

Re: Index aus assoziativem Array auslesen

SUPER!!! Vielen DANK!
francwalter [ Fr, 21 Dezember 2007 19:23 ] [ ID #1892296 ]

Re: Index aus assoziativem Array auslesen

Franc Walter schrieb:

> Ich dachte ein Array hat grundsätzlich einen Index und evtl. nur einen
> Namen (assoz. Array).

Dann denkst Du falsch.

Ein Array-Element hat einen Key, der entweder numerisch oder ein String
ist. Innerhalb eines Arrays können beide Varianten auftauchen, aber
niemals gleichzeitig bei ein- und demselben Element.

Gruß. Claus
Claus Reibenstein [ Fr, 21 Dezember 2007 22:17 ] [ ID #1892305 ]

Re: Index aus assoziativem Array auslesen

> Ein Array-Element hat einen Key, der entweder numerisch oder ein String
> ist. Innerhalb eines Arrays können beide Varianten auftauchen, aber
> niemals gleichzeitig bei ein- und demselben Element.

Ach soooooo! Danke Claus!
Kenne mich noch viel zu wenig mit PHP aus :-)
francwalter [ Sa, 22 Dezember 2007 11:53 ] [ ID #1892683 ]
PHP » de.comp.lang.php.misc » Index aus assoziativem Array auslesen

Vorheriges Thema: Frage zu regulären Ausdrücken...
Nächstes Thema: Datenimportproblem - key too long (#1071)