如何在PHP数组中使用=>语法嵌入if条件判断
PHP数组中根据条件动态添加键值对的正确实现方法
你的写法错误在于PHP数组字面量([])内部不允许直接嵌入if语句,这属于语法违规,和=>本身无关,而是数组声明的语法规则不支持这种写法。下面是几种正确的实现方式:
方式一:先构建基础数组,再追加条件元素
这种写法最直观,适合后续可能扩展复杂逻辑的场景:
// 先定义基础结构的数组 $result = [ 'cars' => [ 'test' => $arrayTest, 'test1' => $arrayTest1, ], 'session' => [ 'sessionkey' => "$xyz", 'lastlogintime' => $sess, ] ]; // 根据$xyzp->available的值,给session数组添加对应键值对 if ($xyzp->available > 0) { $result['session']['availablenow'] = true; } else { $result['session']['wait'] = '7_days_waiting'; } return $result;
方式二:数组合并+三元运算符
适合简单二元判断的场景,代码更紧凑:
return [ 'cars' => [ 'test' => $arrayTest, 'test1' => $arrayTest1, ], 'session' => array_merge( // 基础session键值对 [ 'sessionkey' => "$xyz", 'lastlogintime' => $sess, ], // 根据条件生成的动态数组 $xyzp->available > 0 ? ['availablenow' => true] : ['wait' => '7_days_waiting'] ) ];
方式三:PHP 7.4+ 数组展开语法
如果你的项目使用PHP 7.4及以上版本,这种写法最简洁:
return [ 'cars' => [ 'test' => $arrayTest, 'test1' => $arrayTest1, ], 'session' => [ 'sessionkey' => "$xyz", 'lastlogintime' => $sess, // 用数组展开语法插入条件生成的键值对 ...($xyzp->available > 0 ? ['availablenow' => true] : ['wait' => '7_days_waiting']) ] ];
内容的提问来源于stack exchange,提问作者Ownedds
相关产品推荐
相关产品推荐

