有人可以向我解释这是什么意思吗?我从未见过这个构造 - 取自Prestashop doc
foreach ( $languages as $language )
{
echo '<div id="test_' . $language['id_lang'|'id_lang'] .... // <-- What the??
// ...
}
$ language包含以下键:
Array
(
[id_lang] => 1
[name] => English (English)
// and others...
)
结果是它需要$ language [“id_lang”]的值 - 1.但是我不懂语法,也找不到任何关于它的文档。
答案 0 :(得分:38)
这个php -a
会话表明它完全没有意义:
php > $value = 'something'|'something';
php > echo $value;
something
php > $arr = array('abc' => 1, 'def' => 2);
php > echo $arr['abc'|'abc'];
1
php > echo $arr['def'|'def'];
2
基本上,如果您“按位”或“任何东西”,您将获得原始值。此属性在数学中称为幂等。有关详细信息,请阅读:
老实说,该代码的原作者不知道他们在做什么。
答案 1 :(得分:14)
它的作用是对字符串“id_lang”中字符的ASCII值使用按位运算符,尽管为什么他们这样做是超出我的,因为结果总是相同的。
为了详细说明,让我们说(为了方便起见)我们使用的是ASCII,其中每个字符都被编码为单个字节。让我们看看当它对第一个字符的二进制表示进行比较时会发生什么(i是105
,二进制是01101001
):
"i": 01101001
OR "i": 01101001
___________
= 01101001
= "i"
0|0
为0,1|1
为1,因此所有位都不可避免地保持不变。
答案 2 :(得分:9)
它没有做任何事情,奇怪的是。
var_dump('id_lang'|'id_lang');
#=> string(7) "id_lang"
即使 做某事,在基于字符串的数组键上使用按位运算符肯定会让代码闻到我的味道。