0

JavaScript では、次のことができます。

var somevar = {
    propertyTwo : false,
    propertyThree : "hello!"
}

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

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

これに対してPHPに同様の機能はありますか? オンラインで何かを見つけることができませんでした。

私はこれを試しましたが、PHPはそれを比較とエコーのように扱います1( true)

$somevar = array(
    'propertyTwo' => false,
    'propertyThree' => "hello!"
);

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

echo $test; //displays '1'

存在しなくても大したことではありませんが、php 5.x で提供されるすべてのオプションを使用すると、値のリストの最初の真の値を単一のそのような変数。

関数を書くことができると思います。

編集 :

私が思ったように、PHP には同じ癖はありません。

私が書いたクイック関数

function assign_list($list){
foreach($list as $v)
    if(isset($v) && $v) return $v;
return false;
}

ものの配列を渡すだけです

4

2 に答える 2

1

以下は で機能しますが、 が定義されていないためPHP >= 5.3、依然として を受け取ります。Notice ErrorpropertyOne

<?php
$somevar = array(
    'propertyTwo' => false,
    'propertyThree' => "hello!"
);

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

echo $test; //displays 'hello!'

ただし、変数を抑制することでこれを回避できますが、あまりお勧めできません

$test = @$somevar['propertyOne'] ?: @$somevar['propertyTwo'] ?: @$somevar['propertyThree'];
于 2013-07-03T17:54:53.897 に答える