PHP中的foreach问题

时间:2010-08-12 06:51:58

标签: php foreach

我有一个数组,比如它在{am。{}中的$_FILES

Array ( [ANTI-HAV__TOTAL] => Array ( [name] => Array ( [0] => Firefox_wallpaper1.png [1] => Firefox_wallpaper2.png ) [type] => Array ( [0] => image/png [1] => image/png ) [tmp_name] => Array ( [0] => /tmp/phpr92AvZ [1] => /tmp/phpxmzia3 ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 353750 [1] => 353750 ) ) )

但是当我尝试使用像

这样的foreach时
foreach($_FILES['ANTI-HAV__TOTAL']['name'] as $value1)

它说

Warning: Invalid argument supplied for foreach()  

我该如何解决这个问题?

这是我的表格

<?php
$myresult .= '<div class=\'fieldForm\'>';
$myresult .= '<form id=\'lab_form\' enctype=\'multipart/form-data\' method=\'POST\' action =\''.$this->url(array('controller'=>'lab', 'action' =>'uploadsave')).'\'>';
$myresult .= '<fieldset>';
$myresult .= '<legend>Lab Upload Form</legend>';
foreach($labtests_break as $key => $value)
{
$nvalue = str_replace(' ','__',trim($value));
$nvalue = str_replace('(','___',trim($nvalue));
$nvalue = str_replace(')','____',trim($nvalue));
if(!in_array($value,$gotImages2))
{     
$myresult .= '<div class=\'field50Pct\'>';
/*$myresult .= '<input type=\'button\' id=\''.$nvalue.'Add\'  value=\'Add Another '.$value.' Image\' onclick=\'addElement(this.id)\' />';
$myresult .= '<input type=\'button\' id=\''.$nvalue.'Del\'  value=\'Remove'.$value.' Image\' onclick=\'removeElement(this.id)\' disabled=\'disabled\/>';*/
$myresult .= '</div>';
$myresult .= '<div class=\'clear\'></div>';
$myresult .= '<div class=\'clear\'></div>';
$myresult .= '<div class=\'field50Pct\'>';
$myresult .= '<div class=\'fieldItemLabel\'>';
$myresult .= '<label for=\'\'>'.$value.'</label>';
$myresult .= '</div>';
$myresult .= '<div class=\'fieldItemValue\'>';
$myresult .= '<div id=\''.$nvalue.'input1\'  class=\''.$nvalue.'clonedInput\'>';
$myresult .= '<input type=\'file\' name=\''.$nvalue.'[]\'  id=\''.$nvalue.'1\' class="multi">';
//$myresult .= '<input type=\'button\' style=\'width:50px;padding:2px;margin-left:10px;\' value=\'Clear\'  onclick=\'clearField(this)\'/>';
$myresult .= '</div>';
$myresult .= '</div>';
$myresult .= '</div>';
$myresult .= '<div class=\'clear\'></div>';
}
}
$myresult .= '<input type=\'hidden\' name=\'visitId\'  value=\''.$visitId.'\' >';
$myresult .= '<input type=\'hidden\' name=\'patientId\'  value=\''.$patientId.'\' >';
$myresult .= '<input type=\'hidden\' name=\'tests\'  value=\''.$labtests.'\' >';
$myresult .= '<input type=\'submit\' value=\'upload\'>';
$myresult .= '</fieldset>';
$myresult .= '</form>';
$myresult .= '</div>';
echo $myresult;
?>

这是动作部分的控制器。

public function uploadsaveAction()
{
$this->view->homeId = "current";
        $this->view->homeUrl = $this->view->url(array('controller' => 'lab', 'action' =>'index'));
        $this->view->labMenu = 'yes';
        $this->view->patientsId = "";
        $this->view->settingsId = "";
        $this->view->settingsURL = "";

         $request = $this->getRequest();
if($request->isPost())
        {
                $visitId        = $_POST['visitId'];
                $patientId      = $_POST['patientId'];
                $tests          = $_POST['tests'];
                $tests_break    = explode(',',$tests);
                foreach($tests_break as $key=>$value)
                {

                        $nvalue = str_replace(' ','__',trim($value));
                        $nvalue = str_replace('(','___',trim($nvalue));
                        $nvalue = str_replace(')','____',trim($nvalue));

                        //for($i= 0; $i<=$limit ; $i++)
                        echo '<br/>';
                        print_r($_FILES);
                        echo '<br/>';
                        echo $nvalue;
                        foreach($_FILES[$nvalue]['name'] as $value1)
                        {
                        $key_found = array_search($value1, $_FILES[$nvalue]['name']); // $key = 2;
                        /*$check                = $nvalue.$i;*/
                        $filename       = $_FILES[$nvalue]['name'][$key];
                        $tmpname        = $_FILES[$nvalue]['tmp_name'][$key];
                        //echo $check;
                        //echo '<br/>';
                        if($filename != '')
                        {

                        $structure = '/var/www/html/hms-work/public/visit_images/'.$patientId.'/'.$visitId;

                        if(!is_dir($structure))
                        {
                        if (!mkdir($structure, 0777, true))
                         {
                            die('Failed to create folders...');
                         }
                        }
                        /** is_dir if ends here **/
                        if(is_dir($structure))
                        {
                                if($_FILES[$nvalue]['error'][$key] == 0)
   if(file_exists($structure.'/'.$filename))
                                        {

                                        }
                                        else
                                        {
                                           if(move_uploaded_file($tmpname, "$structure/$filename"))
                                                {
                                                 $imageUpload = new Application_Model_Imageupload();
                                                 $imageUploadMapper = new Application_Model_ImageuploadMapper();

                                                 $imageUpload->setVisitid($visitId)
                                                                ->setType($value)
                                                                ->setImagename($filename)
                                                                ->setCreateddate(date('Y-m-d H:i:s'))
                                                                ->setCreatedby($this->session->userId);

                                                $imageUploadMapper->save($imageUpload);
                                                $this->view->message = 'Succesfully uploaded the images';

                                                }
                                        }
                                }
                        }

                        }
                        }

                }
//              print_r($_POST);
        //      print_r($_FILES);

        }
        else
        {
        }
}

1 个答案:

答案 0 :(得分:1)

尝试

var_dump($_FILES['ANTI-HAV__TOTAL']);

首先查看您的密钥是否正确。