我需要编写一个函数来检查表的3列是空的还是设置的。我的代码有效,但我觉得它不是很优雅。因为如果要检查4列,则必须重写整个代码。你能以优雅的方式重写这段代码吗?
//row[0] == id
//row[1] == licensekey
//row[2] == url_1
//row[3] == url_2
//row[4] == url_3
if($row[2] == '' && $row[3] == '' && $row[4] == ''){
echo 'Every row is empty';
}
if($row[2] == '' && $row[3] == '' && $row[4] != ''){
echo 'Row 1 and 2 are empty';
}
if($row[2] == '' && $row[3] != '' && $row[4] != ''){
echo 'Row 1 is empty';
}
if($row[2] != '' && $row[3] == '' && $row[4] == ''){
echo 'Row 2 and 3 are empty';
}
if($row[2] != '' && $row[3] != '' && $row[4] == ''){
echo 'Row 3 is empty';
}
if($row[2] != '' && $row[3] != '' && $row[4] != ''){
echo 'Every row is set';
}
答案 0 :(得分:4)
$empty = [];
foreach ($row as $i => $val) {
if (!$val) {
$empty[] = $i;
}
}
if ($empty) {
$msg = 'Row ' . implode(' and ', $empty) . ' are (is) empty';
} else {
$msg = 'Every row is set';
}
echo $msg;
答案 1 :(得分:1)
这适用于任何长度的行
function checkRow($row)
{
$st = "";
foreach($row as $key => $col)
{
if($col == '')
{
if($st)
$st .= " and ";
$st .= "Column $key is empty ";
}
}
if(!$st)
$st = 'Every col is set';
return $st;
}
答案 2 :(得分:1)
因为你的问题似乎是学术性的:
根据您想要达到的目标,有两种不同的答案变体。
您的示例看起来像变体2,因为您只是打印该特定列为空。在这种情况下,您可以像
一样编写它if($row[2] == ''){
echo 'Row 2 is empty'
}
if($row[3] == ''){
echo 'Row 3 is empty'
}
变量1然而意味着你只想做某事,而只说第2列和第3列是空的而其他则不是。 在这种情况下,你唯一的机会就是按照你的方式去做。为了使代码看起来更清晰,你应该编写一个函数:
//pseudo code:
function boolean isEmpty($column){
if($column == ''){
return true;
} else {
return false;
}
}
并在你的IF中调用它。