简单的东西,
这没有任何问题:
$openMonday = rtrim(chunk_split($result['opening_hours']['periods'][1]['open']['time'], 2, ':'), ':');
$business->openingTimes['monday'] = isset($openMonday) ? $result['opening_hours']['periods'][1]['open']['time'] : '';
但我不想为此写两行,因为那时我也必须在所有其他开放时间内这样做。
为什么我不能写
$business->openingTimes['monday'] = isset(rtrim(chunk_split($result['opening_hours']['periods'][1]['open']['time'], 2, ':'), ':')) ? $result['opening_hours']['periods'][1]['open']['time'] : '';
我总是得到它预期变量的错误。如何使用三元运算符在isset中使用方法?
答案 0 :(得分:3)
这里的问题是isset()
不是一个真正的函数,而是一个语言结构,它要求它的参数是变量,否则会发出语法错误。
另见手册条目:http://php.net/manual/en/function.isset.php
无论如何,正如@deceze所说,你可能不想在这里使用isset()
,因为它用于检查变量是否存在。
在这种情况下,您可以使用empty()
,而不是写
$openMonday = rtrim(chunk_split($result['opening_hours']['periods'][1]['open']['time'], 2, ':'), ':');
$business->openingTimes['monday'] = isset($openMonday) ? $result['opening_hours']['periods'][1]['open']['time'] : '';
你可以做到
$openMonday = rtrim(chunk_split($result['opening_hours']['periods'][1]['open']['time'], 2, ':'), ':');
$business->openingTimes['monday'] = !empty($openMonday) ? $result['opening_hours']['periods'][1]['open']['time'] : '';
你不用担心不惜任何代价使它成为单线!改为创建一个函数,然后在需要时调用它......但如果你真的想要内联,那么你可以做到
$business->openingTimes['monday'] = !empty(rtrim(chunk_split($result['opening_hours']['periods'][1]['open']['time'], 2, ':'), ':')) ? $result['opening_hours']['periods'][1]['open']['time'] : '';
请记住,上述内容至少需要 PHP 5.5 !
最后,上面的行可以写成
$business->openingTimes['monday'] = !rtrim(chunk_split($result['opening_hours']['periods'][1]['open']['time'], 2, ':'), ':') ? $result['opening_hours']['periods'][1]['open']['time'] : '';
无需isset()
或empty()
答案 1 :(得分:0)
这里不需要isset
! isset
用于安全地测试是否......好吧...... 一个变量存在。你知道你的变量存在,因为你在它上面声明它以前行。如果你想把它变成一行,你甚至不使用变量,你直接使用值。您只想将值与false
进行比较,您可以轻松地将其内联。
摆脱isset
。并阅读The Definitive Guide To PHP's isset And empty。
答案 2 :(得分:0)
<强>解强>
$business->openingTimes['monday'] = isset($result['opening_hours']['periods'][1]['open']['time']) ? rtrim(chunk_split($result['opening_hours']['periods'][1]['open']['time'], 2, ':'), ':') : '';
解释我的所作所为。我询问是否设置了变量,如果是,则使用chunk_split方法,否则字符串将为空。