如何将字符串数组转换为具有可变块大小的块数组?

拉斐尔·拉法特帕纳(Raphael Rafatpanah)

一个人如何转换以下数组:

[
  "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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章