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 …
我有以下数组,当我这样做时print_r(array_values($get_user));,我得到:
Array (
[0] => 10499478683521864
[1] => 07/22/1983
[2] => email@saya.com
[3] => Alan [4] => male
[5] => Malmsteen
[6] => https://www.facebook.com app_scoped_user_id/1049213468352864/
[7] => stdClass Object (
[id] => 102173722491792
[name] => Jakarta, Indonesia
)
[8] => id_ID
[9] => El-nino
[10] => Alan El-nino Malmsteen
[11] => 7
[12] => 2015-05-28T04:09:50+0000
[13] => 1
)
Run Code Online (Sandbox Code Playgroud)
我尝试按如下方式访问数组:
echo $get_user[0];
Run Code Online (Sandbox Code Playgroud)
但这显示了我:
未定义0
注意:
我从Facebook SDK 4获得这个数组,所以我不知道原来的阵列结构.
我怎样才能email@saya.com从数组中获取值作为示例?
以下代码完美运行:
${0x0} = 'test';
echo ${0x0}; // prints "test"
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚为什么.0x0(或者0,非十六进制人称之为)是一个随机容器,它可能是任何数字,但php变量不能以数字开头.{ }这里使用的有什么特别之处,它们的局限性是什么?
以下2个查询之间有什么区别?
mysql_query("UPDATE table SET name = '$name'");
mysql_query("UPDATE table SET name = '{$name}'");
Run Code Online (Sandbox Code Playgroud) 有时您需要向PHP说明实际上变量名称是什么.我发现一位同事和我的做法略有不同.假设您有一个变量,$foo并希望输出_constant_string附加我一直在使用
return "<input type='hidden' name='${foo}_constant_string' value='true' />";
Run Code Online (Sandbox Code Playgroud)
而我的同事正在使用
return "<input type='hidden' name='{$foo}_constant_string' value='true' />";
Run Code Online (Sandbox Code Playgroud)
(稍微做作的例子来简化它).
我的快速测试没有发现明显的差异,但我很好奇:有区别吗?是否有理由偏爱另一个?
编辑:我上面的例子使用了字符串,但我的问题更为笼统 - 我应该明确地这么说.我知道你可以使用花括号进行转义,但是如果在两种使用方式之间存在(在任何情况下)差异,我都没有找到具体的观点.我得到了答案:没有字符串(这是"重复"帖子的内容),但是用于数组和对象(感谢@dragoste).
"${varname}"和"{$varname}"PHP的字符串插值有什么区别?(注意位置$)
php文档说你可以使用其中任何一种,但是没有清楚地解释这两种方法之间的区别.实际上有区别吗?
我有一个像这样的stdClass对象:
stdClass Object ( [key-west] => 1 [disney-land] => 1 )
Run Code Online (Sandbox Code Playgroud)
我试图检索这样的值:
$objectName->key-west
但返回的值是0.为什么?以及如何将其检索为1?
谢谢
例如,检查以下查询;
$query = "SELECT * FROM users WHERE user='{$_POST['username']}';
Run Code Online (Sandbox Code Playgroud)
什么用途?
在字符串上下文中,我确实理解它解决的问题.
我可以做像$ animal ="cat"echo"{$ animal} s"这样的东西.//输出猫
但在我上面发布的SQL中,我只是不明白.以下不一样好吗?
$query = "SELECT * FROM users WHERE user='$_POST['username']' AND password='$_POST['password']'";
Run Code Online (Sandbox Code Playgroud)
那么,使用{和}获取方便的地方?欣赏SQL上下文中的任何示例?
我正在尝试使用PHP和MySQL构建动态查询.
我所做的是创建一个表(即.field_relations)这个字段有5列
NULL)NULL)这是一个示例数据
field_name display_label table_name related_to related_to_field
account_id Account ID accounts NULL NULL
account_name Name accounts NULL NULL
first_name First Name contacts NULL NULL
last_name Last Name contacts NULL NULL
contact_id Contact ID contacts NULL NULL
account_id Account ID contacts accounts account_id
task_id Task ID tasks NULL NULL
subject Subject tasks NULL NULL
owner_id Assigned To contacts contacts contact_id
daily_sales Sales transactions accounts account_id
sold_on Sold …
我试图理解复杂变量语法中两种可能的语法变体之间的区别.PHP允许两种变体:
$foo = 'bar';
$bar = "${foo}bar is allowed"; //or
$bar = "{$foo}bar is allowed";
Run Code Online (Sandbox Code Playgroud)
使用任一语法时都不会生成错误/警告/通知.我注意到两者没有区别,但是PHP手册只显示了{$foo}变体.
使用其他变体是错误的吗?它会不会给我带来任何问题?
php ×10
mysql ×3
arrays ×2
object ×2
arguments ×1
class ×1
dynamicquery ×1
operators ×1
properties ×1
symbols ×1