【问题标题】:Converting single array into multi dimensional array (grouping ) based on key基于键将单个数组转换为多维数组(分组)
【发布时间】:2019-05-07 15:35:51
【问题描述】:

假设我有以下数组:

$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
 )
)

我怀疑这不是太难,但我正在努力解决它。

【问题讨论】:

标签: php arrays


【解决方案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

【讨论】:

    【解决方案2】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2014-09-09
      相关资源
      最近更新 更多