将平面数组中的每个元素转换为包含该元素原始值的子数组

问题描述 投票:0回答:4

我的数组看起来像这样

Array
(
    [0] => A
    [1] => B
    [2] => C
)

所需数组

Array
(
    [0] => Array
        (
            [0] => A
        )

    [1] => Array
        (
            [0] => B
        )

    [2] => Array
        (
            [0] => C
        )
)

我已经浏览了这些链接,但作为新手无法找到解决方案。

将关联数组转换为索引数组

将索引多维数组转换为关联多维数组

php arrays multidimensional-array
4个回答
5
投票

例如:

$new_array = array_map(
    function ($v) { return [$v]; }, 
    ['A', 'B', 'C']
);

1
投票

这是关于如何获取所需数组的总括声明:

$desired_array = array(array("0"=>"A"), array("0"=>"B"), array("0"=>"C"));

但是,动态地,您可以执行以下操作:

//Assume $original_array = array("0"=>"A", "1"=>"B", "2"=>"C");

$desired_array = array(); // New Array
for($i = 0; $i < count($original_array); $i++){ // Loop over all elements in original array
array_push($desired_array, array("0"=>$original_array[$i])); // Place each valueable as an array in new desired array
}

1
投票
$arrOld = ['A','B','C','D','E'];
$arrNew = [];
foreach($arrOld as $key => $value){
    $arrNew[] = [$key => $value];
}

0
投票

以下所有片段都提供相同的结果。 (演示)

  • 将数组分成 1 元素块:

    var_export(array_chunk($array, 1));
    
  • 将要转换的每个元素映射为包含原始值的 1 元素数组:

    var_export(array_map(fn($v) => (array) $v, $array));
    
  • 将每个元素映射为子数组中的单个值

    var_export(array_map(fn($v) => [$v], $array));
    
  • 使用带有一对方括号的无体循环将每个值作为新元素的唯一子元素。

    $result = [];
    foreach ($array as $result[][]);
    var_export($result);
    
© www.soinside.com 2019 - 2024. All rights reserved.