2016-12-01 9 views
4

Я хочу получить другое свойство ассоциативного массива, когда первое не существует.Есть ли способ использовать оператор или на PHP, как в JavaScript?

JavaScript:

var obj = {"a": "123", "b": "456"}; 
var test = obj.a || obj.b; 
console.log(test); 

Можно ли это сделать в PHP:

$arr = array("a" => "123", "b" => "456"); 
$test = $arr["a"] || $arr["b"]; 
echo $test; 

Когда я бегу PHP, я получаю 1.

Есть ли короткий путь Я мог бы это сделать?

ответ

8

В PHP вы можете сделать

//Check if $arr["a"] exists, and assign if it does, or assign $arr["b"] else 
$arr = array("a" => "123", "b" => "456"); 
$test = isset($arr["a"]) ? $arr["a"] : $arr["b"]; 

Но в PHP 7, вы можете сделать

//Does the same as above, but available only from PHP 7 
$arr = array("a" => "123", "b" => "456"); 
$test = $arr["a"] ?? $arr["b"]; 

См operators

Обратите внимание, что $arr["a"] || $arr["b"] в PHP вычисляет только значение boolean.

+0

Спасибо, это именно то, что я искал :) – Cr4xy

+0

Ваш прием! Я думаю, что вторая форма - хорошее улучшение PHP7! :) – AnthonyB

2

Попробуйте этот вариант:

$arr = array("a" => "123", "b" => "456"); 
$test = isset($arr['a']) ? $arr['a'] : $arr['b']; 
echo $test; 

Ternary operator