根据键将单个数组转换为多维数组(分组)

时间:2019-05-07 15:35:52

标签: php arrays

让我说我有以下数组:

$arr = array("exercise__2" => "Then a set", "sets__2" => 3, "exercise__4" => "And finally a set", "sets__4" => 3);

我现在想做的是,每次键中的数字更改时,都将该数组转换为多维数组。

我知道我们必须使用explode("__", $key),但是我不知道如何将其转换为多维数组,因此它看起来像以下内容:

Array
(
 Array
 ( 
  [exercise__2] => Then a set
  [sets__2] => 3
 )
 Array
 (
  [exercise__4] => And finally a set
  [sets__4] => 3
 )
)

我怀疑这不是很困难,但是我正在努力尝试解决这个问题。

2 个答案:

答案 0 :(得分:1)

简单的for循环应该做到这一点:

$arr = array("exercise__2" => "Then a set", "sets__2" => 3, "exercise__4" => "And finally a set", "sets__4" => 3);
foreach($arr as $k =>$v) {
    $res[explode("__", $k)[1]][$k] = $v;
}

如果您不想在上方数组中使用额外的键,则可以使用array_values

实时示例:3v4l

答案 1 :(得分:0)

Array_chunk似乎足够。
Array_chunk拆分具有n个项目的数组。
第三个参数是保留密钥。

$arr = array("exercise__2" => "Then a set", "sets__2" => 3, "exercise__4" => "And finally a set", "sets__4" => 3);
$result = array_chunk($arr, 2, true);
print_r($result);

输出:

Array
(
    [0] => Array
        (
            [exercise__2] => Then a set
            [sets__2] => 3
        )

    [1] => Array
        (
            [exercise__4] => And finally a set
            [sets__4] => 3
        )

)

https://3v4l.org/s57ua

相关问题