在写上下文中不能使用方法返回值

时间:2011-07-18 08:14:04

标签: php codeigniter

以下if条件导致错误:

if( !empty ($this -> session -> userdata( 'user_id') ) )
{
    $user_id = $this -> session -> userdata( 'user_id' );
} 
else 
{ 
    $error = "ID doesn't exist";
}

我收到以下错误:

Fatal error: Can't use method return value in write context in (line number)

我该如何解决?

5 个答案:

答案 0 :(得分:28)

将第一个if语句替换为if( ! $this->session->userdata('user_id') )

empty函数检查变量是否为空但userdata是函数。此外,对于您的信息,根据CodeIgniter documentation,如果项目不存在,则userdata函数会返回FALSE,这意味着如果user_id中不存在else您的会话将执行{{1}}中的代码。

答案 1 :(得分:5)

如果您使用的是codeigniter会话库,则无需检查数据  codeigniter已经为你做了。  如果$this -> session -> userdata( 'user_id')为空或未设置,则它将返回false。所以只需要类似的代码

$user_id = $this->session->userdata('user_id');
if(!$user_id){  }else{ $error = 'ID doesn't exist'; }

答案 2 :(得分:2)

函数empty()不能以这种方式使用。它期望引用参数,但不是直接函数返回。函数返回不被视为变量,可以通过引用传递。

$test = $this->session->userdata('user_id');

if(!empty($test))
    $user_id = $test;
else
    $error = "ID doesn't exist";

答案 3 :(得分:0)

  

if(($ this - > session - > userdata('user_id')> 0)

它更好,而不是 if(!$ this - > session - > userdata('user_id'))

因为有时会出错

答案 4 :(得分:0)

有时此错误是由于PHP版本引起的。 PHP 7.0以上支持最新的Codeigniter版本。您只需要将PHP版本从cpanel更新到7.0或更高版本即可。希望这对其他使用最新codeigniter的人有所帮助。我在下一行有相同的问题。

public void scanFiles(File file) {
File[] fileArray = file.listFiles(); 
for (File f : fileArray){
    if (f.isDirectory()) 
      scanFiles(f);
    if (f.isFile() && (f.getpath().endswith("..backup") || //any extensions)) {
        //Your custom file are here 
       }
    }
}