分隔数组并将其拆分为新数组

Delimit and split array into new array's

我有以下数组:

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

如何将上述字符串转换为多个数组,每个数组包含第一部分作为索引[0],第二部分作为索引[1];

所以"user_first_name:string",应该转换成数组,如:

array("user_first_name", "string")

一些背景资料: 每个值的第一部分 ("user_first_name") 引用一个 POST 字段,第二部分引用要在我的验证 class 中使用的方法。例如: user_first_name 是我的 POST 中的一个字段,应该通过我的字符串过滤方法。

您可以将 array_map 与爆炸一起使用:

<?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
        )
)
<?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',
    ),
)