我得到了以下数组
(
[0] => 1
[1] => John Doe
[2] => john
[3] => john@doe.com
[4] => lorem
[5] => Lorem, Ipsum Dolor Sit Amet
)
基本上我是从CSV文件中读取这些值,我想在插入数据库之前验证数据,这里是我要申请的基本验证
这就是我在做的事情:
if (count($value) == 6) {
$params = array(
'id' => array_key_exists(0, $value) && !empty($value[0]) ? $value[0]: null,
'name' => array_key_exists(1, $value) && !empty($value[1]) ? $value[1]: null,
'username' => array_key_exists(2, $value) && !empty($value[2]) ? $value[2]: null,
'email' => array_key_exists(3, $value) && !empty($value[3]) ? $value[3]: null,
'password' => array_key_exists(4, $value) && !empty($value[4]) ? $value[4]: null,
'position' => array_key_exists(5, $value) && !empty($value[5]) ? $value[5]: null
);
}
我想知道,处理这个问题的更好方法是什么?我不喜欢的是重复,也许我可以把它放在一个循环中来解决,我想知道你会怎么做?
感谢。
答案 0 :(得分:6)
只需使用array_map()
检查值是否为空,并使用键array_combine()
,如下所示:
if(count($value) == 6) {
$params = array_combine(["id", "name", "username", "email", "password", "position"], array_map(function($v) {
return ( !empty($v) ? $v : NULL );
}, $value));
}
答案 1 :(得分:0)
一种方法是使用array_merge()
,你可以制作这样的函数:
public function merge_my_array($params = []){
return array_merge(
[
'id' => null,
'name' => null,
'username' => null,
'email' => null,
'password' => null,
'position' => null
], $params);
}
现在如果你这样调用函数:
$array = merge_my_array(['id'=>1, 'name'=>'John', 'email'=>'john@gmail.com']);
变量$ array将具有:
id 1,姓John,电子邮件john@gmail.com,所有其他属性为null。
如果你在没有传递参数的情况下调用函数就可以了,它不是必需的,它将返回一个数组,其中所有这六个属性都为null。像这样:
$array = merge_my_array();