Php 计数函数默认值显示为1

Php 计数函数默认值显示为1,php,file,count,drupal-7,Php,File,Count,Drupal 7,我使用php的count函数来计算上传文件时选择了多少个文件。取决于计数,我想应用一些条件。当没有选择任何文件时,我检查了计数值,计数值显示为1,当我选择一个文件时,计数值显示为1,选择两个文件后,计数值显示为2。我不明白这里出了什么问题。请找到下面的代码,我已经写了。谢谢你的建议 $form['upload_fieldset']['file'] = array( '#type' => 'file', '#title' => 'Choose a File',

我使用php的count函数来计算上传文件时选择了多少个文件。取决于计数,我想应用一些条件。当没有选择任何文件时,我检查了计数值,计数值显示为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.
$form['upload\u fieldset']['file']=array(
“#键入”=>“文件”,
“#title”=>“选择一个文件”,
“#name'=>”文件[]”,
“#attributes”=>array('multiple'=>'multiple'),
);
函数xxx_提交_文件_上传($form,&$form_state){
$num_files=count($_files['files']['name']);
echo“”;print_r($num_files);exit;//这里我得到的计数是1。如果没有选择任何文件。

即使您没有文件,
$\u FILES['FILES']['name']
被设置为
'
,因此它也算作1

您可以检查文件是否已上载,然后计数:

    $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.";
}

即使您没有文件,
$\u FILES['FILES']['name']
也被设置为
'
,因此它会计为1

您可以检查文件是否已上载,然后计数:

    $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.";
}

下面的代码对我有用。你可以试试


下面的代码对我有用。你可以试试


试试
count($\u FILES['FILES'))
或者
count($\u FILES)
或者
print\r($\u FILES)
你测试过吗???刚才我测试过count($\u FILES['file])‌​这将给出正确的结果。我可以知道我的代码有什么问题吗?
$\u FILES['FILES']
包含在完整的数组中,并且
$\u FILES['FILES']['name']
将只返回一个或什么都不返回。您可以测试'var\u dump($\u FILES['FILES']['name'])实际计数($\u FILES['file['file]‌​s'])这总是给0,如果选择的文件也为0,那么计数($\u文件)这总是给1。试试
count($\u文件['FILES'])
或者只是
count($\u文件)
或者
print\r($\u文件)
你测试了吗???刚才我测试了计数($\u文件['file')‌​这将给出正确的结果。我可以知道我的代码有什么问题吗?
$\u FILES['FILES']
包含在完整的数组中,并且
$\u FILES['FILES']['name']
将只返回一个或什么都不返回。您可以测试'var\u dump($\u FILES['FILES']['name'])实际计数($\u FILES['file['file]‌​s'])这表示始终为0,如果选择了文件,则其显示也为零,并且计数($\u文件)这表示始终为1。