我有这段代码
if(!array_key_exists('key1', $_POST)){
$_POST['key1'] = null;
}
if(!array_key_exists('key_x', $_POST)){
$_POST['key_x'] = null;
}
if(!array_key_exists('key_polar_8', $_POST)){
$_POST['key_polar_8'] = null;
}
if(!array_key_exists('nilak', $_POST)){
$_POST['nilak'] = null;
}
写这个是更好还是更短的方式?
答案 0 :(得分:11)
您可以将字段名称放在数组中,然后使用循环。
$keys = array('key1', 'key_x', 'key_polar_8', 'nilak');
foreach($keys as $k){
if(!array_key_exists($k, $_POST)){
$_POST[$k] = null;
}
}
答案 1 :(得分:3)
修改强>
另一种创造性方式
不要每次都检查array_key_exists
,而只需找到array_diff_key
的密钥并放入null
。
$posted_keys = array("key1" , "key2" , "nilak");
$not_in_post = array_diff_key($posted_keys, $_POST);
foreach($not_in_post as $k)
$_POST[$k] = null;
(想听听你对这个的意见)
Loop是王道。
$posted_keys = array("key1" , "key2" , "nilak");
foreach($posted_keys as $key)
{
if(!array_key_exists($key , $_POST))
{
$_POST[$key] = null;
}
}
答案 2 :(得分:1)
只是提供另一种方式,不一定是最好的,但你可以像这样使用array_merge:
<?php
$defaultValues = array('key1'=>null, 'key_x'=>null, 'key_polar_8'=>null, 'nilak'=>null);
$_POST = array_merge($defaultValues, $_POST);
http://codepad.viper-7.com/ix0KTD
如果你的帖子数组有数字键,可能会遇到小问题,因为array_merge会附加数字键。这通常不是$ _POST的问题。
这也允许将任何值设置为默认值,而不仅仅是null。