This is a collection of questions that come up every now and then about syntax in PHP. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.
It used to be hard to find questions about operators and other syntax tokens.¹
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from …
这是关于编程PHP时可能遇到的警告,错误和通知的一些答案,并且不知道如何修复.这也是社区Wiki,因此邀请每个人参与添加和维护此列表.
Stack Overflow上经常弹出诸如"已发送标头"或"调用非对象成员"之类的问题.这些问题的根本原因总是一样的.因此,这些问题的答案通常会重复,然后显示OP在他/她的特定情况下要改变哪一行.这些答案不会为网站添加任何价值,因为它们仅适用于OP的特定代码.具有相同错误的其他用户不能轻易地从中读取解决方案,因为它们过于本地化.这很难过,因为一旦你理解了根本原因,修复错误是微不足道的.因此,该列表试图以一般的方式解释解决方案.
如果您的问题已被标记为重复,请在下面找到您的错误消息并将修复程序应用于您的代码.答案通常包含进一步调查的链接,以防单独的一般答案不清楚.
如果您想贡献,请添加您的"收藏"错误消息,警告或通知,每个答案一个,简短说明它意味着什么(即使它只是突出显示其手册页的术语),可能的解决方案或调试方法和现有问答的清单.此外,随时改善任何现有的答案.
另外,请参阅
每个人都遇到语法错误.即使是有经验的程序员也会犯错误.对于新手来说,这只是学习过程的一部分.但是,通常很容易解释错误消息,例如:
PHP Parse错误:语法错误,第20行的index.php中出现意外的'{'
意想不到的符号并不总是真正的罪魁祸首.但是行号给出了从哪里开始寻找的粗略想法.
始终查看代码上下文.语法错误往往隐藏在提及或在前面的代码行.将您的代码与手册中的语法示例进行比较.
虽然不是每个案例都匹配另一个案例 然而,有一些常规步骤可以解决语法错误.这篇文章总结了常见的陷阱:
意外的T_FUNCTION ......
意外T_IF
意外T_FOREACH
意外T_FOR
意外T_WHILE
意外T_DO
意外T_PRINT
意外T_ECHO
意外的T_INLINE_HTML ......
意外的T_PAAMAYIM_NEKUDOTAYIM ......
意外的T_OBJECT_OPERATOR ......
意外的T_DOUBLE_ARROW ......
意想不到的T_SL ......
意外的T_BOOLEAN_OR ...
意外的T_BOOLEAN_AND ......
意外的T_NS_SEPARATOR ......
我正在使用某人编写的PHP类来与BaseCamp API进行交互.
我正在做的特定调用是检索待办事项列表中的项目,这很好.
我的问题是,我不知道如何只访问todo-items返回的对象的属性.这是返回对象的var_dump:
object(stdClass)[6]
public 'completed-count' => string '0' (length=1)
public 'description' => string 'Description String' (length=89)
public 'id' => string '12345' (length=7)
public 'milestone-id' => string '' (length=0)
public 'name' => string 'Error Reports' (length=13)
public 'position' => string '1' (length=1)
public 'private' => string 'false' (length=5)
public 'project-id' => string '58904' (length=7)
public 'tracked' => string 'false' (length=5)
public 'uncompleted-count' => string '1' (length=1)
public 'todo-items' =>
object(stdClass)[3]
public 'todo-item' =>
object(stdClass)[5]
public 'completed' => …Run Code Online (Sandbox Code Playgroud) 如何访问输出为的PHP Associative数组元素:
[highlighting] => stdClass Object
(
[448364] => stdClass Object
(
[Data] => Array
(
[0] => Tax amount liability is .......
Run Code Online (Sandbox Code Playgroud)
我想访问键[0]中的字符串值.我想做的事情如下:
print myVar->highlighting->448364->Data->0
Run Code Online (Sandbox Code Playgroud)
但这两个数字/整数似乎有问题.
编辑:
我将在这里给出一些历史,从哪里获得myVar.我使用的json_decode()是:
$myVar = json_decode(url)
Run Code Online (Sandbox Code Playgroud) 关于SO的第一个问题,它是一个真正的RTM候选者.但我保证你看起来似乎无法找到它.我很乐意做一个#headpalm,结果证明这是一个我错过的简单事情.
试图弄清楚Zend Framework并遇到以下语法:
$this->_session->{'user_id'}
Run Code Online (Sandbox Code Playgroud)
我从未见过用于访问看似成员变量的花括号语法.它有什么不同
$this->_session->user_id
Run Code Online (Sandbox Code Playgroud)
我假设_session是无关紧要的,但将其包括在问题中,因为它可能不是.
花括号只是一个清洁度约定,试图包装复合变量名称user_id吗?或者它是某种特殊的访问者?
任何指向TFM的指针都可以让我感到谦卑.
非常感谢.请温柔.
例 print_r($myarray)
Array
(
[0] => Array
(
[id] => 6578765
[name] => John Smith
[first_name] => John
[last_name] => Smith
[link] => http://www.example.com
[gender] => male
[email] => email@domain.com
[timezone] => 8
[updated_time] => 2010-12-07T21:02:21+0000
)
)
Run Code Online (Sandbox Code Playgroud)
问题,如何获得$myarray单值如:
echo $myarray['email']; will show email@domain.com
Run Code Online (Sandbox Code Playgroud) print_r()在我的阵列上做我得到以下内容:
Array (
[0] =>
stdClass Object
(
[id] => 25
[time] => 2014-01-16 16:35:17
[fname] => 4
[text] => 5
[url] => 6
)
)
Run Code Online (Sandbox Code Playgroud)
如何访问数组中的特定值?由于stdClass对象,以下代码不起作用
echo $array['id'];
Run Code Online (Sandbox Code Playgroud) 我正在将数据添加到将通过 3rd 方 API 发送的 stdClass 对象,因此我为此对象的元素提供的名称实际上是由该外部服务定义的。
$insertArray = array();
$insertArray[0] = new stdclass();
$insertArray[0]->Name = $name;
$insertArray[0]->PhoneNumber = $phone;
Run Code Online (Sandbox Code Playgroud)
这一切都非常有效,直到我遇到一个名称无效的属性:
$insertArray[0]-> First.Name = $firstname;
所以这不是有效的 PHP 语法,有没有办法解决这个问题?