使用一维数组,将其展开,并创建一个多维数组

时间:2016-10-19 02:52:12

标签: php arrays multidimensional-array

所以我有一个看起来像这样的数组:

Array
 (
  [0] => john.smith@domain.com:John
  [1] => jane.doe@domain.com:Jane
)

正如您所看到的,它是用户的邮件和用户名,由冒号分隔。

我想创建一个爆炸冒号的多维数组,然后创建一个看起来更像

的多维数组
Array
 (
   [0] => Array
    (
        [user_email] => john.smith@domain.com
        [user_name] => John
    )

   [1] => Array
    (
        [user_email] => jane.doe@domain.com
        [user_name] => Jane
    )

)

2 个答案:

答案 0 :(得分:0)

你可以这样做:

<?php

$data = [
    "john.smith@domain.com:John",
    "jane.doe@domain.com:Jane"
];

function customArray($data){
    $final = [];
    $i = 0;

    foreach($data as $k => $v){
        $splitted = explode(":",$v);
        $final[$i]['user_email'] = $splitted[0];
        $final[$i]['user_name']  = $splitted[1];
        $i++;
    }

    return $final;
}

print_r(customArray($data));

查看结果here。 基本上我上面做的是

  • 遍历数组,
  • 通过分隔符:
  • 分解该值
  • 使用相同的[$i]在迭代中对它们进行索引,以便每个原始数组元素正确配对新的键/值。

请正确命名,我只是举个例子: - )

答案 1 :(得分:0)

您可以爆炸源数组的每个元素并将其保存在新数组中,如下所示。最后,您将在$ result数组中获得所需的格式。

$source_array = array("john.smith@domain.com:John","jane.doe@domain.com:Jane");
foreach($name_email_array as $key => $value){
        $name_email = explode(":",$value);
        $result[$key]['user_email'] = $name_email[0];
        $result[$key]['user_name']  = $name_email[1];
    }