首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP变量声明速记(类似于JavaScript)

PHP变量声明速记(类似于JavaScript)
EN

Stack Overflow用户
提问于 2013-07-04 01:48:07
回答 2查看 380关注 0票数 0

在JavaScript中,我可以这样做:

代码语言:javascript
运行
复制
var somevar = {
    propertyTwo : false,
    propertyThree : "hello!"
}

var test = somevar.propertyOne || somevar.propertyTwo || somevar.propertyThree

alert(test); //displays "hello!"

在PHP中有没有类似的功能?在网上找不到任何东西。

我试过了,但是PHP只是把它当作一个比较,echo的1 (true)

代码语言:javascript
运行
复制
$somevar = array(
    'propertyTwo' => false,
    'propertyThree' => "hello!"
);

$test = $somevar['propertyOne'] || $somevar['propertyTwo'] || $somevar['propertyThree'];

echo $test; //displays '1'

如果没有,也没什么大不了的,但我想,有了php 5.x中提供的所有花哨功能,就会有某种形式的简写方法,可以将一系列值中的第一个true值赋给这样的单个变量。

我想我可以写一个函数。

编辑:

正如我所怀疑的那样,PHP没有同样的怪癖。

我写的快速函数

代码语言:javascript
运行
复制
function assign_list($list){
foreach($list as $v)
    if(isset($v) && $v) return $v;
return false;
}

只需向它传递一组内容

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-04 01:54:54

下面的代码可以在PHP >= 5.3中运行,但您仍然会收到一个Notice Error,因为没有定义propertyOne

代码语言:javascript
运行
复制
<?php
$somevar = array(
    'propertyTwo' => false,
    'propertyThree' => "hello!"
);

$test = $somevar['propertyOne'] ?: $somevar['propertyTwo'] ?: $somevar['propertyThree'];

echo $test; //displays 'hello!'

不过,您可以通过抑制变量来解决此问题,但这是极力不推荐使用的

代码语言:javascript
运行
复制
$test = @$somevar['propertyOne'] ?: @$somevar['propertyTwo'] ?: @$somevar['propertyThree'];
票数 1
EN

Stack Overflow用户

发布于 2013-07-04 02:07:49

这在PHP中不起作用,原因如下:

代码语言:javascript
运行
复制
$somevar['propertyOne'] = false;
$somevar['propertyTwo'] = true;

$test = $somevar['propertyOne'] || $somevar['propertyTwo'];

想象一下,在if语句中输入该查询:

代码语言:javascript
运行
复制
if( $somevar['propertyOne'] || $somevar['propertyTwo'] ){ ... }

如果任一变量为true,则返回true (计算结果为1)。

现在,如果我们将所有变量都设为false

代码语言:javascript
运行
复制
$somevar['propertyOne'] = false;
$somevar['propertyTwo'] = false;

$test = $somevar['propertyOne'] || $somevar['propertyTwo'];

该变量返回false (计算结果为0)。

我们可以做的另一件事是:

代码语言:javascript
运行
复制
$somevar['propertyOne'] = true;
$somevar['propertyTwo'] = true;

$test = $somevar['propertyOne'] && $somevar['propertyTwo'];

这将返回true (计算结果为1),因为两个变量都满足条件。

这意味着我们可以在PHP中做这样的事情:

代码语言:javascript
运行
复制
$test = $somevar['propertyOne'] || $somevar['propertyTwo'];
if($test){ ... }

PHP,DR:在中,您将表达式的结果存储到一个变量中,而不对任何内容进行任何验证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17454884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档