计数函数显示默认值为1


count function is showing by default value as 1

我使用php的计数函数来计数在文件上传时选择了多少文件。根据计数,我想加一些条件。当没有选择文件时,然后我检查计数值,它显示为1,当我选择一个文件时,它显示为1,选择两个文件后,它将显示计数为2。我不知道这里出了什么问题。请查收下面的代码,我已经写好了谢谢你的建议。

  $form['upload_fieldset']['file'] = array(
    '#type' => 'file',
    '#title' => 'Choose a File',
    '#name' => 'files[]',
    '#attributes' => array('multiple' => 'multiple'),
  );
function xxx_submit_file_upload($form, &$form_state) { 
  $num_files = count($_FILES['files']['name']);
echo '<pre>';print_r($num_files);exit;//Here I am getting count as 1. if no files were chosen also.

即使您没有文件,$_FILES['files']['name']也会被设置为'',因此它也会被计数为1。

你可以检查文件是否上传,然后计数:

$upload_error = $_FILES['files']['error'][0];
if ($upload_error === UPLOAD_ERR_NO_FILE) {
    $num_files = 0;
} else {
    $num_files = count($_FILES['files']['name']);
}

下面的代码是为我工作。你可以试试。

    $num_files = 0;
foreach ($_FILES['files']['name'] as $name) {
    if (!empty($name))
        $num_files++;
}
if( $num_files == 0 ){
    echo "No file selected";
}else{
    echo $num_files." files uploaded.";
}