-
combine / merge array
Servus,
irgendwie stehe ich mal wieder auf'n Schlauch.
Ich habe in der DB ein array abgespeichert, welches so aussieht:
Code:
Array
(
[0] => Array
(
[nr] => 3
[obst] => "Krische"
)
[1] => Array
(
[nr] => 3
[obst] => "Himbeere"
)
[2] => Array
(
[nr] => 5
[obst] => "Pflaume"
)
)
Ich möchte gerne jetzt das der "key" [nr] kombiniert wird, dafür habe ich mir folgende Funktion gebaut:
PHP-Code:
$key="nr";
protected function group_by($array, $key) {
$return = array();
foreach($array as $val) {
$return[$val[$key]][] = $val;
}
return $return;
}
Das Ergebnis davon ist:
Code:
Array
(
[3] => Array
(
[0] => Array
(
[nr] => 3
[obst] => "Krische"
)
[1] => Array
(
[nr] => 3
[obst] => "Himbeere"
)
)
[5] => Array
(
[0] => Array
(
[nr] => 5
[obst] => "Pflaume"
)
)
)
Haben möchte ich eigentlich:
Code:
Array
(
[3] => Array
(
[obst] => "Krische"
)
[obst] => "Himbeere"
)
[5] => Array
(
[obst] => "Pflaume"
)
)
Über ein Geistesblitz wäre ich sehr dankbar :-)
-
Ähm, das was du haben möchtest kann es gar nicht geben :D Du kannst ja nicht zwei identische Keys haben die sich nicht gegenseitig überschreiben.
Kannst du nochmal versuchen aufzuzeigen, wie das Array aussehen soll?
-
Ja ich glaube ich habe mich ganz schön verrant ...
Also am Ende soll das ganze als Json dann so aussehen:
Code:
{
3:
{
obst: "Krische"
},
{
obst: "Himbeere"
}
},
{
5:
{
obst: "Pflaume"
}
}
und im Moment habe ich irgendwie ein Array zuviel in meinen Json-Output...
Code:
{
3: [
{
nr: "3",
obst: "Krische"
},
{
nr: "3",
obst: "Himbeere"
}
],
5: [
{
nr: "5",
obst: "Pflaume"
}
],
}
-
Auch das ist kein valides JSON.
-
Danke jetzt habe ich es auch geschnallt *g* war halt ein absoluter Logikfehler meinerseits :-) Gut das es das Forum gibt.
-
Zitat:
Zitat von
marq
Code:
Array
(
[3] => Array
(
[obst] => "Krische"
)
[obst] => "Himbeere"
)
[5] => Array
(
[obst] => "Pflaume"
)
)
Wir @toflar schon schrieb, geht das so nicht. Meinst Du vielleicht eher so:
Code:
Array
(
[3] => Array
(
[obst] => ["Krische","Himbeere"]
)
[5] => Array
(
[obst] => ["Pflaume"]
)
)
-
Ja das würde mir auch richtig weiter helfen.
-
PHP-Code:
$new = [];
foreach ($array as $v) {
if (!isset($new[$v['nr']])) {
$new[$v['nr']] = [];
}
$new[$v['nr']][] = $v['obst'];
}