-1

冒着被否决票的风险,我会问这个问题,看看是否有人可以帮助我。我已经盯着这个看了一段时间,我无法弄清楚。

解析错误:语法错误,意外的 '' (T_ENCAPSED_AND_WHITESPACE),第 130 行需要标识符 (T_STRING) 或变量 (T_VARIABLE) 或数字 (T_NUM_STRING)

function pdf($type=null){                                                                                                                                                                                                              
    //get default or create a type                                                                                                                                                                                                     
    $data = $this->storeSessionData(                                                                                                                                                                                                   
        array(),                                                                                                                                                                                                                       
        'SalesComp',                                                                                                                                                                                                                   
        $this->variables                                                                                                                                                                                                               
    );                                                                                                                                                                                                                                 

    $type = ($type)? $type : $data['type']; //this is line 130                                                                                                                                                                                            

    $this->set('data', $this->report('store', 'year', 3, $type));                                                                                                                                                                      

    $this->set(                                                                                                                                                                                                                        
        'districtTitle',                                                                                                                                                                                                               
        array('N' => 'North', 'S' => 'South')                                                                                                                                                                                          
    );                                                                                                                                                                                                                                 
    $districts = $this->Store->find(                                                                                                                                                                                                   
        'list',                                                                                                                                                                                                                        
        array(                                                                                                                                                                                                                         
            'fields' => array('Store', 'District'),                                                                                                                                                                                    
            'conditions' => array('NOT' => array('District'=> 'O')                                                                                                                                                                     
            )                                                                                                                                                                                                                          
        )                                                                                                                                                                                                                              
    );                                                                                                                                                                                                                                 
    $this->set('districts', $districts);                                                                                                                                                                                               
    $supervisor = $this->Store->find(                                                                                                                                                                                                  
        'list',                                                                                                                                                                                                                        
        array('fields' => array('Store','Supervisor'),                                                                                                                                                                                 
              'conditions' => array('NOT' => array('District'=> 'O')                                                                                                                                                                   
              )                                                                                                                                                                                                                        
        )                                                                                                                                                                                                                              
    );                                                                                                                                                                                                                                 
    $this->set('supervisor', $supervisor);                                                                                                                                                                                             

    $this->set(                                                                                                                                                                                                                        
        'supervisors',                                                                                                                                                                                                                 
        $this->Supervisor->find(                                                                                                                                                                                                       
            'list',                                                                                                                                                                                                                    
            array('fields' => array('Supervisor','ShortName')                                                                                                                                                                          
            )                                                                                                                                                                                                                          
        )                                                                                                                                                                                                                              
    );                                                                                                                                                                                                                                 
    $title = ($type == 'sales')?                                                                                                                                                                                                       
        'Sales Comparison Report':'Fuel Comparison Report';                                                                                                                                                                            
    $this->set('title', $title);                                                                                                                                                                                                       
    $this->layout = 'pdf';                                                                                                                                                                                                             
    $this->render();                                                                                                                                                                                                                   


}  
4

3 回答 3

1

您可以在此处找到所有 php 令牌:

http://php.net/manual/en/tokens.php

标记线有两点:

  1. PHP 是一种脚本语言,实际上语法非常复杂。它可能看起来很简单,但与 C 或类似语言相比,它非常复杂,只是因为这些年来发生了如此多的小(而且很多时候是不连贯的)更改,并且有些东西在不破坏向后兼容性的情况下无法再更改. 其中一件事是处理括号 - PHP 不以数学方式处理这些,而是​​根据上下文对它们进行特殊处理。这意味着您应该在标记的行中摆脱它们(无论哪种方式,首先都不需要它们)

  2. “不可见”(即 UTF8)空格 - 这些是许多“奇怪”问题的根源,特别是如果您在 mac 上开发(按 alt + 空格键)。修复它们的最简单方法:重新键入该行。并且不要尝试复制和粘贴它,因为您也会复制空格。

另外我会将行更改为

if (!$type) $type = $data['type'];

我希望你知道 php 中哪些值评估为 falsy,因为它不仅是 NULL(你可以在这里找到一个列表:http: //php.net/manual/en/language.types.boolean.php

附带说明:PHP 是作为一种编写模板的简单方法而开发的,因此如果您想构建复杂的逻辑(例如 C,它PHP 简单得多,并且我做 PHP 已经 6 年多了)

于 2013-07-26T20:41:36.113 回答
1

该错误表明某处的引号或括号不匹配。不幸的是,当这种情况发生时,错误消息中的行号可能是一些完全不相关的行——它只是编译器注意到语法不再有效的第一个地方。错误实际上是在问题中的代码片段之前的某个地方,所以我不可能查明它。代码编辑器中的语法高亮有助于找出不匹配的地方。

于 2013-07-26T21:05:04.340 回答
0

尝试更换

$type = ($type)? $type : $data['type'];

$type = $type ? $type : $data['type'];

我怀疑它有什么区别,但也许在命名的变量$type和问号之间需要一个空格。有关这方面的更多信息,请查看有关三元运算符的PHP文档。

于 2013-07-26T20:45:01.920 回答