PHP:在数组中查找空值

时间:2012-10-24 15:57:20

标签: php arrays

如果用户提交的<input>框之一为空,我想显示错误,但我还想处理没有空名称的框。

以下是表格:http://jsfiddle.net/Draven/rEPXM/27/

PHP:

if(isset($_POST['addFolder']))
{    
    foreach($_POST['folder'] as $id => $value)
    {
        $database->query('INSERT INTO folders (name) VALUES (?)', array($value));
    }
    $success[] = "Folder(s) added";                 
}

4 个答案:

答案 0 :(得分:2)

尝试以下

foreach($folder as $id => $value)
{
    if($value){
      $database->query('INSERT INTO folders (name) VALUES (?)', array($value));
    }
    else {
       $error[]=$id;
    }
}

$ error包含所有没有值的索引。

答案 1 :(得分:2)

试试这个:

$folder = isset($_POST['folder']) && is_array($_POST['folder'])
        ? $_POST['folder']
        : array();
$errors = array();
foreach ($folder as $id => $value) {
    $value = is_array($value) ? '' : trim($value);
    if ($value == '') {
        $errors[$id] = 'Empty value';
        continue;
    }

    $database->query('INSERT INTO folders (name) VALUES (?)', array($value));
}

修改模板:

...

<div id="foldercontainer">
<?php foreach ($errors as $error): ?>
    <div>
        <div><?php echo $error ?></div>
        <input name="folder[]" type="text" size="20" value="" />
    </div>
<?php endforeach ?>
</div>

...

答案 2 :(得分:0)

if(!isset($folder) || $folder === "")

但如果您$folder为空......

,我不明白为什么要运行查询

答案 3 :(得分:0)

补充所说的内容。 如果要测试值是否为空,请使用trim()。您不想命名具有空值的文件夹,对吗?:

$folder = array('aaaa', 'bbbb', ' ', '    ');

foreach($folder as $id => $value) {
    $value = trim($value);

    if(!empty($value)) {
      var_dump($value);
    } else {
       $error[]=$id;
    }
}

在上升的过程中输出将是:

string 'aaaa' (length=4)

string 'bbbb' (length=4)

现在,不使用trim()并测试它是否为空,输出是(并且这是一个错误):

string 'aaaa' (length=4)

string 'bbbb' (length=4)

string ' ' (length=1)

string '    ' (length=4)