我有这个代码
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;
}
写这篇文章的方式是更好还是更短?
您可以将字段名放入数组中,然后使用循环。
$keys = array('key1', 'key_x', 'key_polar_8', 'nilak');
foreach($keys as $k){
if(!array_key_exists($k, $_POST)){
$_POST[$k] = null;
}
}
编辑:另一种创造性的方式:不必每次都检查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;
(想听听你对这个的看法)
循环是王。
$posted_keys = array("key1" , "key2" , "nilak");
foreach($posted_keys as $key)
{
if(!array_key_exists($key , $_POST))
{
$_POST[$key] = null;
}
}
只是提供另一种方式,不一定是最好的,但您可以像这样使用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
如果你的post数组有数字键,可能会遇到小问题,因为array_merge会附加数字键。不过,这通常不是$_POST的问题。
这也允许将任何值设置为默认值,而不仅仅是null。