Ich habe ein Array von Arrays. Jedes verschachtelte Array enthält zwei Elemente, die durch Kommas getrennte Werte sind. Was ich tun möchte, ist diese verschachtelten Arrays in mehrere Arrays zu zerlegen.Möglicher einfacherer Weg, verschachtelte Arrays zu teilen
So zum Beispiel, wenn ich die folgenden Array von Arrays habe ...
Array
(
[0] => Array
(
[a] => 'single value',
[b] => '1,2',
[c] => 'left, right'
],
[1] => Array
(
[a] => 'single value',
[b] => '4,5',
[c] => 'top, middle'
)
)
... Ich würde letztlich mit dem folgenden, am Ende mag.
Array
(
[0] => Array
(
[a] => 'single value',
[b] => '1',
[c] => 'left'
)
[1] => Array
(
[a] => 'single value',
[b] => '1',
[c] => 'right'
)
[2] => Array
(
[a] => 'single value',
[b] => '2',
[c] => 'left'
)
[3] => Array
(
[a] => 'single value',
[b] => '2',
[c] => 'right'
)
[4] => Array
(
[a] => 'single value',
[b] => '4',
[c] => 'top'
)
[5] => Array
(
[a] => 'single value',
[b] => '4',
[c] => 'bottom'
)
[6] => Array
(
[a] => 'single value',
[b] => '5',
[c] => 'top'
)
[7] => Array
(
[a] => 'single value',
[b] => '5',
[c] => 'bottom'
)
)
Ich kann dies erreichen mit einer Reihe von verschachtelten foreach-Schleifen, aber das scheint wirklich ineffizient - vor allem in Anbetracht der Tatsache, dass einige b und c Werte viele Elemente enthalten kann.
$new_array = [];
foreach($array as $a)
{
foreach(explode(',', $a['b']) as $b)
{
foreach(explode(',', $a['c']) as $c)
{
$d = [
'a' => $a['a'],
'b' => $b,
'c' => $c
];
$new_array[] = $d;
}
}
}
Gibt es eine bessere Möglichkeit, diese mit Array-Funktionen zu trennen?
Dank
Warum denken Sie, das ist ineffizient? Die Anzahl der Elemente, die Sie zu Ihrem neuen Array hinzufügen, ist genau die Anzahl der Male, die es passieren muss ... Sie können das nicht reduzieren. Diese Frage ist jedoch für StackOverflow nicht verfügbar. Sie könnten versuchen [CodeReview] (https://codereview.stackexchange.com), aber ich würde in Betracht ziehen, die Frage alle zusammen fallen zu lassen. – trincot