$form = array();
$form = $_POST['data'];
function livre($form) {
if (empty($form["radios"]) || empty($form["age"])
|| empty($form["gender"]) || empty($form["civil"])
|| empty($form["formation_area"]) || empty($form["scholarithy"])
|| empty($form["professional_activity"]) || empty($form["city_work"])
|| empty($form["contract_job"]) || empty($form["salary"])){
echo ("empty");
}
else
echo ("not empty");
}
livre($form_data_array);
第一个问题是:可以将空数减少到一个,例如empty($form) || ($form1)
第二个是:我如何减少行数,我觉得我使用的这个方案不是最好的方法。我无法简单地验证数组是否为空,因为只有一些索引可以为空。
感谢
答案 0 :(得分:5)
您可以将所有必须在数组中测试的字段名称存储起来:
$fields = array('radios', 'age', ...);
然后循环遍历:
foreach($fields as $field) {
if(empty($form[$field])) {
echo 'empty';
break;
}
}
旁注:您不需要$form = array();
。
答案 1 :(得分:1)
更紧凑的方法是:
if (count(array_filter($form, "strlen")) != count($form)) {
echo "one field was empty";
}
请注意,它会执行实际的strlen
测试,而不是empty
。这更适合文本字段,因为它不会将"0"
视为缺席。
答案 2 :(得分:0)
$empty = false;
foreach ($_POST as $value)
{
if (empty($value))
$empty=true;
}
答案 3 :(得分:0)
您可以循环搜索表单中的每个元素:
function livre($form)
{
$elements = array(
'radios',
'age',
...
);
foreach($elements as $el)
{
if(!key_exists($el, $form)
{
echo 'empty';
}
}
echo 'not empty';
}
livre($form_data_array);
答案 4 :(得分:0)
while ($form[$i])
{
if (empty($form[$i])
echo "empty";
else
$i++;
}
答案 5 :(得分:0)
你可以尝试这样做。
function livre($form) {
if(is_valid($form))
echo("valid")
else
echo ("not valid");
}
function is_valid($post) {
$required_fields = ["radios", "age", "gender", "civil", "formation_area", "scholarithy",
"professional_activity", "city_work", "contract_job", "contract_job", "salary"]
for($key in $required_fields)
if(empty($post[$key]))
return false;
return true;
}
我引入了一个单独的函数来验证帖子数据,我做了一个for循环来检查数据是否有效。
答案 6 :(得分:0)
我非常喜欢马里奥给出的答案!!
如果这样可行,这可能有点快:
function livre()
{
$form = $_POST['data'];
if (
$form["radios"]==''|| $form["age"]=='' || $form["gender"]==''||
$form["civil"]=='' || $form["formation_area"]=='' ||
$form["scholarithy"] =='' || $form["professional_activity"]==''||
$form["city_work"]=='' || $form["contract_job"]=='' ||
$form["salary"]==''
)
echo ("empty");
else
echo ("not empty");
}
livre();