#php #arrays #multidimensional-array
#php #массивы #многомерный массив
Вопрос:
Итак, у меня есть массив, который выглядит следующим образом:
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
)
)
Комментарии:
1.
foreach
цикл,explode
на двоеточии, попробуй, я уверен, что ты сможешь это сделать 🙂2. Я знаю, что foreach и explode будут работать. Но тогда как бы я приступил к созданию нового массива?
3. $new[счетчик ключ][user_email]= разнесенная часть 0; $new[счетчик ключ][имя_пользователя]= разнесенная часть 1;
Ответ №1:
Вы можете сделать это следующим образом:
<?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));
Смотрите результаты здесь.
В основном то, что я делаю выше, это
- выполните итерацию по массиву,
- разнесите значение по разделителю
:
, - проиндексируйте их в рамках итерации, используя то же самое
[$i]
, чтобы новый ключ / значение были правильно сопоставлены с исходным элементом массива.
Хотя правильно называйте вещи, я просто привожу пример 🙂
Комментарии:
1. да, верно, я немного отредактирую и добавлю еще немного объяснений
2. @joseph-parker если вы чего-то не понимаете, не стесняйтесь спрашивать, а также, добро пожаловать в SO!
3. вам не нужен $ i, вы могли бы просто использовать исходные ключи массива
Ответ №2:
Вы можете разнести каждый элемент исходного массива и сохранить его в новом массиве, как показано ниже. Наконец, вы получите желаемый формат в массиве $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];
}