PHP Multiarray in Array umwandeln
Mikee
- php
0 ChrisB0 Joachim
Hallöchen
Ich habe folgenden zweidimensionalen Array:
$data[] = array(
"x" => $raw_data_x, //x- acceleration
"y" => $raw_data_y, //y- acceleration
"z" => $raw_data_z); //z- acceleration
Mit ein paar Tausend Datenpunkten in $data[].
Ich brauche nun einen Array mit allen x-Werten. Intuitiv schreibe ich immer:
$xdata=$data[]["x"];
Geht aber nicht. Gibt es eine einfache Variante diesen $xdata array zu erzeugen, ohne einen Loop zu programmieren?
Sorry, falls es offensichtlich ist, aber ich habe mir schon die Finger wund gesucht.
Hi,
$data[] = array(
"x" => $raw_data_x, //x- acceleration
"y" => $raw_data_y, //y- acceleration
"z" => $raw_data_z); //z- acceleration
> Mit ein paar Tausend Datenpunkten in $data[].
>
> Ich brauche nun einen Array mit allen x-Werten. Intuitiv schreibe ich immer:
>
> ~~~php
> $xdata=$data[]["x"];
>
Geht aber nicht.
Natürlich nicht, und *das* sollte dir auch intuitiv klar sein - $array[] ist die Syntax zum Anlegen eines neuen Elements; lesend kannst du damit nicht zugreifen (weil dann gar nicht klar ist, welches Element du lesen willst).
Gibt es eine einfache Variante diesen $xdata array zu erzeugen, ohne einen Loop zu programmieren?
Bspw.:
$data = array_map(function($e) { return $e['x']; }, $data);
MfG ChrisB
Hallo,
Bspw.:
$data = array_map(function($e) { return $e['x']; }, $data);
...mit PHP ab v5.3. Ansonsten
$xdata = $data['x'];
Gruß Alexander.
Hi Alexander,!
$xdata = $data['x'];
Notice: Undefined index: x in script.php on line X
Interessant wäre die Frage, was der Fragesteller eigentlich mit den X-Werten vorhat. Also: Mikee, was hast du mit X-Werten vor? =)
MfG H☼psel
Hi Alexander,!
$xdata = $data['x'];
Notice: Undefined index: x in script.php on line XInteressant wäre die Frage, was der Fragesteller eigentlich mit den X-Werten vorhat. Also: Mikee, was hast du mit X-Werten vor? =)
MfG H☼psel
Danke allen Antwortern!
Ich merke, dass es ohne irgend einen "Loop" nicht geht, die array_map Variante kannte ich aber nicht, dankeschön!
Zur Frage wieso ich das brauch: die x/y/z Beschleunigungswerte lese ich auch einem CSV Exportfiles eines Beschleunigungssensors (jede 1/10s einen Wert). Ich mache einerseits diverse Berechnungen damit und stelle die Resultate dar. Im konkreten Fall wollte ich die x (oder wahlweise y, z) Werte an meine Plotfunktion übergeben, die nur eindimensionale Arrays annimmt.
Grüsschen
Michael
Lieber ChrisB,
Bspw.:
$data = array_map(function($e) { return $e['x']; }, $data);
aha, mit einer anonymen Funktion... aber unterhalb von PHP5.3 braucht es wohl eher diesen Weg:
$xdata = array();
foreach ($data as $v) {
$xdata[] = $v['x'];
}
Liebe Grüße,
Felix Riesterer.
Hi,
Mit ein paar Tausend Datenpunkten in $data[].
wo jetzt, in $data[] oder in $data? Sprich, besitzt das [n]te Element von $data 1000de Unterpunkte oder beinhaltet $data selber 1000de Elemente?
Gibt es eine einfache Variante diesen $xdata array zu erzeugen, ohne einen Loop zu programmieren?
Ein Loop _ist_ die einfachste Variante, um durch 1000de Elemente zu iterieren, es sei denn Du wendest Methoden an, die jedes Element eines Arrays bearbeiten (wie ja bereits erwähnt, ergänzend hier array_walk).
Oder möchtest Du alles tippen:
$xdata = array(
$data[0]["x"],
$data[1]["x"],
.
.
.
$data[1000]["x"],
}
;-)
Gruesse, Joachim