PHP,意想不到的T
很奇怪,我的代码在本地主机上运行,但是当我将它部署在远程服务器上时。 它得到了T_IF错误。 代码如下:
xxx行围绕着:$ experiment ['import_result'] = TRUE;
private function do_import($file_info, $ih_id){
$this->load->library("MY_PHPExcel");
$inputFileName = $file_info['full_path'];
$sheetNames = array('General','Gas', 'Sample', 'Mass Gain', 'Cr');
/** Identify the type of $inputFileName **/
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
/** Create a new Reader of the type that has been identified **/
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
/** Advise the Reader that we only want to load cell data **/
$objReader->setReadDataOnly(true);
/** Advise the Reader of which WorkSheets we want to load **/
$objReader->setLoadSheetsOnly($sheetNames);
/** Tell the Reader that we want to use the Read Filter **/
//$objReader->setReadFilter($filterSubset);
/** Load $inputFileName to a PHPExcel Object **/
$objPHPExcel = $objReader->load($inputFileName);
$sheetCount=$objPHPExcel->getSheetCount();
$experiment = array();
for($index = 0; $index<$sheetCount; $index++){
$objPHPExcel->setActiveSheetIndex($index);
$sheetName = $objPHPExcel->getActiveSheet()->getTitle();
if($sheetName == 'General'){
$experiment['general'] = $this->read_general($objPHPExcel, $index, 1);
}elseif($sheetName == 'Sample'){
$experiment['sample'] = $this->read_sample($objPHPExcel, $index, 1);
}elseif($sheetName == 'Gas'){
$experiment['gas'] = $this->read_gas($objPHPExcel, $index, 1);
}elseif($sheetName == 'Mass Gain'){
$experiment['mass'] = $this->read_mass($objPHPExcel, $index, 1);
}elseif($sheetName == 'Cr'){
$experiment['cr'] = $this->read_cr($objPHPExcel, $index, 1);
}
}
//if there is format error
foreach($experiment as $sheet){
if(isset($sheet) && !empty($sheet)){
if(isset($sheet['error']) && !empty($sheet['error'])){
$experiment['import_result'] = FALSE;
break 1;
}elseif(isset($sheet['validation']['validation']) && $sheet['validation']['validation'] == 0){
$experiment['import_result'] = FALSE;
break 1;
}else{
$experiment['import_result'] = TRUE;
break 1;
}
}
}
if($experiment['import_result']){//there is no format error, proceed to import
//do import into DB
$import_flag = 0;
$post_data = $this->input->post();
if(isset($post_data['import_radio']) && $post_data['import_radio'] == 1){//new
$import_flag = $this->m_import->import_experiment_new($experiment, $this->session->userdata('user_id'), $ih_id);
}elseif(isset($post_data['import_radio']) && $post_data['import_radio'] == 2){//update
//debug
//$this->firephp->log('update an existing experiment');
$import_flag = $this->m_import->import_experiment_update($post_data['import_eid'], $experiment, $this->session->userdata('user_id'), $ih_id);
}else{//didn't choose a mode
return array('status'=>4, 'message'=>'Please select "new" or "update".');
}
if($import_flag != 0){//import done ok
if($post_data['import_radio'] == 1){
return array('status'=>1, 'message'=>'File has been successfully imported, the new experiment ID is '.$import_flag.'.');
}else{
return array('status'=>1, 'message'=>'File has been successfully imported, Experiment'.$import_flag.' has been updated.');
}
}else{//validation ok, import fail
return array('status'=>2, 'message'=>'Something went wrong during the process of importing, please try again.');
}
}else{
//return experiment with errors which are to be presented in view
$return_error = array();
$return_warning = array();
foreach($experiment as $name => $sheet){
if(isset($sheet['validation'])){
foreach ($sheet['validation']['error'] as $item){
array_push($return_error, $item);
}
foreach($sheet['validation']['warning'] as $item){
array_push($return_warning, $item);
}
}
}
//if(!empty($temp_interval_match_error)){ array_push($return_error, $temp_interval_match_error); }
return array('status'=>3, 'message'=>'The file has invalid cells, please correct the file according to the following hints.',
'error' => $return_error, 'warning'=>$return_warning);
}
}//end of fn do_import()
请帮助找出问题。 提前谢谢了。
不太可能,但这可能是由于您if
上述if
语句中设置$experiment['import_result']
的方式造成的。 例如,如果$sheet
没有设置或为空, $experiment['import_result']
将不会被设置,因为没有else
。 尝试添加另外一个else {$experiment['import_result'] = FALSE;}
。
foreach($experiment as $sheet){
if(isset($sheet) && !empty($sheet)){
if(isset($sheet['error']) && !empty($sheet['error'])){
$experiment['import_result'] = FALSE;
}elseif(isset($sheet['validation']['validation']) && $sheet['validation']['validation'] == 0){
$experiment['import_result'] = FALSE;
}else{
$experiment['import_result'] = TRUE;
}
}
else {$experiment['import_result'] = FALSE;} // added
}
问题解决了。 我通过块删除代码块,最后得出结论,当我上传文件时,其中一条if语句被其上面的注释意外地注释掉了。 我想这可能是关于服务器的错误。 奇怪的。
链接地址: http://www.djcxy.com/p/69847.html上一篇: PHP, unexpected T