一个人如何转换以下数组:
[
"prefix1 foo",
"prefix2 bar",
"prefix1 aaa",
"prefix2 bbb",
"prefix3 ccc",
"prefix1 111",
"prefix2 222"
]
转换为以下数据结构:
[
[
"prefix1" => "foo",
"prefix2" => "bar"
],
[
"prefix1" => "aaa",
"prefix2" => "bbb",
"prefix3" => "ccc"
],
[
"prefix1" => "111",
"prefix2" => "222"
],
]
如果不是因为块的大小可变,那么array_chunk将是完美的。前缀是提前知道的,每个“块”的长度为两个或三个。
您可以这样做(给定$input
):
$result = [];
$prev = $input[0];
foreach($input as $line) {
list($key, $value) = explode(" ", $line);
if ($key < $prev) $result[] = [];
$result[count($result)-1][$key] = $value;
$prev = $key;
}
假定应该在相同子数组中结尾的键在输入中按字母顺序排列,因此当不保持此顺序时,会进入下一个子数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句