Разграничить и разбить массив на новые массивы

У меня есть следующий массив:

$data = ['user_first_name:string', 'user_last_name:string', 'user_email:email', 'user_password:password'];

Как преобразовать приведенную выше строку в несколько массивов, каждый из которых содержит первую часть как index [0], а вторую как index [1];

поэтому «user_first_name: string» следует преобразовать в массив, например:

array("user_first_name", "string")

Некоторая справочная информация:
Первая часть каждого значения («user_first_name») ссылается на поле POST, а вторая часть ссылается на метод, который будет использоваться в моем классе Validate. Например: user_first_name является полем в моем POST и должно проходить через мой метод строкового фильтра.

-1

Решение

Вы можете использовать array_map с explode:

<?php

$data = ['user_first_name:string', 'user_last_name:string', 'user_email:email', 'user_password:password'];

$data = array_map(function($item) {
return explode(':', $item);
}, $data);

print_r($data);

Выход:

Array
(
[0] => Array
(
[0] => user_first_name
[1] => string
)
[1] => Array
(
[0] => user_last_name
[1] => string
)
[2] => Array
(
[0] => user_email
[1] => email
)
[3] => Array
(
[0] => user_password
[1] => password
)
)
0

Другие решения

<?php

$data = [
'user_first_name:string',
'user_last_name:string',
'user_email:email',
'user_password:password'
];

foreach($data as $pair)
$output[] = explode(':', $pair);

var_export($output);

Выход:

array (
0 =>
array (
0 => 'user_first_name',
1 => 'string',
),
1 =>
array (
0 => 'user_last_name',
1 => 'string',
),
2 =>
array (
0 => 'user_email',
1 => 'email',
),
3 =>
array (
0 => 'user_password',
1 => 'password',
),
)
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector