我正在寻找@一些PHP代码,&我找到了这条线,我无法弄清楚它的含义
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
所以如果条件被评估为真,那么究竟发生了什么,这会增加数组索引,还是将数据值加1?
任何解释甚至其他资源都将受到高度赞赏
答案 0 :(得分:5)
该特定键中的数组内的值是加1,例如,如果$contents[$item]
为3,则它变为4.它不会弄乱整个$contents
数组,它也不会改变$item
键;它只是更改数组中的特定值(如果存在)。
以这种方式可视化:
$item = 'a';
$contents = array(
'a' => 3
);
// $contents['a'] is set, so it assigns $contents[$item] to itself, plus 1
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
echo $contents[$item]; // Output is 4
答案 1 :(得分:2)
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
在功能上等同于:
@$contents[$item]++;
(我期待你的更正。)
答案 2 :(得分:1)
这只是一种奇特的写作方式
if (isset($contents[$item]))
$contents[$item] = $contents[$item] + 1;
else
$contents[$item] = 1;
答案 3 :(得分:0)
查看ternary operator的文档。如果该语句为true,则执行第一个语句,返回数组的值+ 1.否则,它执行第二个语句并返回1.
但实际上,请阅读PHP手册。这对你有好处。
答案 4 :(得分:0)
实际上,
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
是合同形式:
if (isset($contents[$item])) {
$contents[$item] = $contents[$item] + 1
}
else{
$contents[$item] = 1;
}
答案 5 :(得分:0)
该行的过程非常简单。
首先,这是使用?
和:
的三元操作,基本上有if
和else
块
例如,以下2个完全相同
if(true)
{
someTrueFunction();
}else
{
someFalseFunction();
}
和
true ? someTrueFunction() : someFalseFunction();
if语句具有以下语法:
if(expression)
{
//do Work
}else
{
//Do Other Work
}
三元运算符执行相同操作但删除大括号和关键字:
expression ? work : other Work
与三元的区别在于返回了真/假区域内的值,这允许您在条件下将数据分配给变量,将其全部保存在一行中,完整示例:
$value = 1;
$ValueValid = $value > 0 ? true : false;
这是真的,你也可以在大括号内直接操作以及返回值,这就是你的代码行正在做的事情:
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
与:
相同if(isset($contents[$item]))
{
$contents[$item] = $contents[$item] + 1;
}else
{
$contents[$item] = 1;
}
三元运算符可用于多种语言,请参阅Wiki
资源: