以下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)
我该如何解决?
答案 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
}
}
}