我需要创建一个类似$myvar-test;
的var,但那是无效的?
答案 0 :(得分:8)
不,它无效。原因是减号( - )。在PHP中,变量可以包含0-9a-zA-Z_,但不能以数字开头,并且允许使用Unicode字母。请参阅:http://www.php.net/manual/en/language.variables.basics.php
PHP中的变量用a表示 美元符号后跟名称 变量。变量名是 区分大小写的。
Variable names follow the same rules as other labels in PHP. A valid
变量名以字母或开头 下划线,后跟任意数量的 字母,数字或下划线。作为一个 正则表达式,它会 表达如下: '[A-ZA-Z_ \ x7f- \ XFF] [A-ZA-Z0-9_ \ x7f- \ XFF] *'
还有几个例子:
<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var"; // outputs "Bob, Joe"
$4site = 'not yet'; // invalid; starts with a number
$_4site = 'not yet'; // valid; starts with an underscore
$täyte = 'mansikka'; // valid; 'ä' is (Extended) ASCII 228.
?>
答案 1 :(得分:4)
有一些解决方法,但它真的非常难看。最好使用下划线,或camelCase或数组,您可以使用任何字符串作为键名。
这将是解决方法:
${'a-b'} = 'foo';
var_dump(${'a-b'}); // string(3) "foo"
答案 2 :(得分:0)
您不能在变量名中使用破折号。
来自文档:
PHP中的变量由美元符号后跟变量名称表示。变量名称区分大小写。
变量名遵循与PHP中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线。作为正则表达式,它将表达为:'[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *'
来源:http://www.php.net/manual/en/language.variables.basics.php
答案 3 :(得分:0)
用于减法的减号
你会得到与$ myvar * test $ myvar $ test,$ myvar等变量相同的结果; test $ myvar(test等等。
只是不要在变量名中使用特殊语法。
请注意,数组键名几乎可以包含任何字符,即使是国家语言
答案 4 :(得分:0)
变量名遵循与PHP中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线。作为正则表达式,它将表达为:'[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *'
因此根据这些规则,您的变量名称无效。
答案 5 :(得分:0)
不,不是。
http://www.php.net/manual/en/language.variables.basics.php
变量名遵循与PHP中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线。
答案 6 :(得分:0)
它无效 - 但如果你从JSON获得它 - 这是一个解决方法:
print_r($JSONObject);
stdClass Object (
[psr-0] => stdClass Object
(
[MyBundle] => 'MyPath'
)
)
...尝试访问 $ JSONObject-&gt; psr-0; 不起作用 - 因此您可以将 stdClass 强制转换为数组:
$JSONArray = (array)$JSONObject;
print_r($JSONArray);
Array
(
[psr-0] => stdClass Object
(
[MyBundle] => 'MyPath'
)
)
...现在您可以轻松访问 $ JSONArray ['psr-0'] !