数组变量加一的结果

时间:2011-02-11 19:23:42

标签: php arrays

我正在寻找@一些PHP代码,&我找到了这条线,我无法弄清楚它的含义

            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;

所以如果条件被评估为真,那么究竟发生了什么,这会增加数组索引,还是将数据值加1?

任何解释甚至其他资源都将受到高度赞赏

6 个答案:

答案 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)

该行的过程非常简单。

首先,这是使用?:的三元操作,基本上有ifelse

例如,以下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

资源: