让我说我有以下数组:
$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
)
)
我怀疑这不是很困难,但是我正在努力尝试解决这个问题。
答案 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
)
)