php 数组实现多条件,php - 在PHP的数组内使用多个条件的三元运算符 - SO中文参考 - www.soinside.com...

首先,我不确定您为什么认为这里的数组存在特定问题。让我们替换变量,以便我们可以看到代码的重要部分:$site0 = $response->published_sites['0']->site;

$id0 = $response->published_sites['0']->item_id;

$site1 = $response->published_sites['1']->site;

$id1 = $response->published_sites['1']->item_id;

$site2 = $response->published_sites['2']->site;

$id2 = $response->published_sites['2']->item_id;

$item_ar_assign =

($site0 == 'AR' ?: $id0)

|| ($site1 == 'AR' ?: $id1)

|| ($site2 == 'AR' ? : $id2);

这将无法工作的原因与数组无关,而是因为您使用了错误的运算符:PHP的||运算符总是返回一个布尔值-true或false,无论它看什么值。

$a ?: $b的形式表示“ $a如果正确,则为$b”。在这种情况下,$site0 == 'AR' ?: $id0的意思是“如果true为$site0,则为'AR',否则为$id0的值”

我认为您想做的是嵌套三元运算符的完整形式$test ? $valueIfTrue : $valueIfFalse。

请注意,关联性有点奇怪,因此您需要谨慎使用括号。我认为这应该有效:$item_ar_assign =

($site0 == 'AR') ? $id0

: (

$site1 == 'AR' ? $id1

: (

$site2 == 'AR' ? : $id2

)

);

一旦将完整的变量放回去,使用完整的if语句可能看起来会更好。if ($response->published_sites[0]->site == 'AR' ) {

$item_ar_assign = $response->published_sites[0]->item_id;

}

elseif ($response->published_sites[1]->site == 'AR' ) {

$item_ar_assign = $response->published_sites[1]->item_id;

}

elseif ($response->published_sites[2]->site == 'AR' ) {

$item_ar_assign = $response->published_sites[2]->item_id;

}

但是,您可以将其放入循环中,而不是复制粘贴该条件:foreach ( [0, 1, 2] as $site_number ) {

if ($response->published_sites[$site_number]->site == 'AR' ) {

$item_ar_assign = $response->published_sites[$site_number]->item_id;

break; // stop at first match

}

}

或更简单:foreach ( $response->published_sites as $published_site ) {

if ($published_site->site == 'AR' ) {

$item_ar_assign = $published_site->item_id;

break; // stop at first match

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值