• 3
name

A PHP Error was encountered

Severity: Notice

Message: Undefined index: userid

Filename: views/question.php

Line Number: 191

Backtrace:

File: /home/prodcxja/public_html/questions/application/views/question.php
Line: 191
Function: _error_handler

File: /home/prodcxja/public_html/questions/application/controllers/Questions.php
Line: 433
Function: view

File: /home/prodcxja/public_html/questions/index.php
Line: 315
Function: require_once

name Punditsdkoslkdosdkoskdo

Unexplained syntax error with logical OR ( || )

I'm working with NetBeans for Mac, and I'm running CakePHP (though I don't think the framework has anything to do with it) in a shared hosting in Linux. This is not a big issue, but it is frustrating.

I wonder why I can't simply do this:

if($this->Session->read('User.value1') || $this->Session->read('User.value2')){
  ...
}

The error message I get is:

Error: syntax error, unexpected '$this' (T_VARIABLE)

Why is there a syntax error? I can't see it.

I can do this with no problems:

if($this->Session->read('value1')){
  ...
}

I can also do this with no problems (no whitespace around ||):

if($this->Session->read('User.value1')||$this->Session->read('User.value2')){
  ...
}

But if I put spaces around the || operator, it stops working. Or rather — and this is the most confusing part — sometimes it stops working when I put spaces around the || operator, and sometimes it doesn't.

I thought this might be a bug in Netbeans 7.4, but when I ignored the warning from NetBeans and tried to run the code anyway, PHP gave me the same error.

What is happening here?

I'm working With NetBeans for MAC

When is a space not a space?

When it's a non-breaking space!

The intention is:

" || "
207C7C20 (hex)

But what is actually in the source file is almost certainly:

" || "
207C7CA0 (hex)

(on stack overflow it won't be but I bet it is in the source file).

With a mac the problem is (using my own keyboard layout, but I am assuming it's similar in your case):

"|" = alt + 1
" " = alt + space (accidental)

So typing away, with the sequence " || " it's very easy for the alt key to still be depressed when the space bar is pressed and: voilà you get unexpected "wat" syntax errors which at face value make no sense - until you realize what the problem is.

Example:

-> cat foo.php 
<?php

$foo = "x";
if (true || $foo) {
}
-> php -l foo.php 

Parse error: syntax error, unexpected '$foo' (T_VARIABLE) in foo.php on line 4

Errors parsing foo.php
  • 15
Reply Report
    • Holly #$%||&=¿/!!! OMG! I knew I'm not crazy!! At least not that crazy! I have tried "alt + space" and the error happens, deleted that space and the error disappear... Thanks a Lot @AD7six !

Warm tip !!!

This article is reproduced from Stack Exchange / Stack Overflow, please click

Trending Tags

Related Questions