从单个数组中制作多个PHP数组,然后将这些新数组存储到新的单个数组中

时间:2018-06-28 13:20:44

标签: php arrays wordpress

这可能有点通用名称,但我将尽我所能尽力解释我的问题。

所以我有这种类型的关联数组:

 Array
 (
  [ICO_0] => checked
  [Investment_0] => checked
  [Investment_1] => checked
  [Marketing_1] => checked
)

我想做的就是根据附加在键末尾(0,1 ...)的数字将它分成多个数组。基本上我想要一个新的数组看起来像这样:

Array(
  Array(
    [ICO_0] => checked
    [Investment_0] => checked
    [Token Sale_0] => checked       
  ),
 Array(
    [Investment_1] => checked
    [Marketing_1] => checked
  )  
)

我曾尝试使用array_chunk解决此问题,但无法使其正常工作。

我将需要此输出,因为我想根据嵌套的数组对它们的保留进行排序,从最高数量的项目开始。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用几种不同的方法来完成此操作。一种方法是遍历并爆炸密钥名称,如果您知道总会有一个下划线,获取最后一个数字,然后将其用作索引:

$results =  [
    "ICO_0" => "checked",
    "Investment_0" => "checked",
    "Investment_1" => "checked",
    "Marketing_1" => "checked",
    "Investment_2" => "checked",
    "Marketing_2" => "checked"
];

foreach($results as $key => $value){
    $ex = explode('_', $key);
    $new_result[end($ex)][$key] = $value;
}

对我来说返回以下内容:

array:3 [▼
    0 => array:2 [▼
        "ICO_0" => "checked"
        "Investment_0" => "checked"
    ]
    1 => array:2 [▼
        "Investment_1" => "checked"
        "Marketing_1" => "checked"
    ]
    2 => array:2 [▼
        "Investment_2" => "checked"
        "Marketing_2" => "checked"
    ]
]