在PHP中不是很强,所以这是我的问题:
我正在构建一个简单的数组作为json返回,用另一个数组中的数据填充它。 $ eventarray可能有指数气体或者可能没有,所以我需要检查现有的气体指数,如果存在则获取值,如果没有填充默认值。
我如何以最佳方式做到这一点?
再次在PHP中不那么强大。
这是数组:
$somearr = array(
"actiontaken"=>sprintf("%s", $eventarray['desc']),
"actionname" =>sprintf("%s", $eventarray['name']),
"type" =>sprintf("%s", $eventarray['type']),
"subtype" =>sprintf("%s", $eventarray['name']),
"min" =>sprintf("%s", $eventarray['min']),
"gas" =>sprintf("%s", $eventarray['gas']),
"playerId"=>$value['p'],
"name" =>$value2['name'],
"race" =>$value2['race']
);
答案 0 :(得分:4)
您可以使用isset()
检查元素是否存在(并且不是null
):
isset($eventarray['gas']) ? $eventarray['gas'] : 'defaultvalue'
注意:如果null
是您不希望使用默认值的可能值,则无法使用isset
,但必须使用array_key_exists($eventarray, 'gas')
。
答案 1 :(得分:1)
您可以使用三元运算符检查其存在,并设置默认值。
它的工作方式是:(条件)? [if true]:[if false]
...
"gas" => (isset($eventarray['gas'])) ? $eventarray['gas'] : 'default',
答案 2 :(得分:0)
答案 3 :(得分:0)
首先使用默认值初始化$ somearr数组:
$somearr = array(
'actiontaken' => 'default action',
'actionname' => 'default action name',
etc.. );
然后遍历$ eventarray:
foreach( $eventarray as $event => $eventval ) {
$somearr[$event] = $eventval;
}
答案 4 :(得分:0)
"actiontaken"=>sprintf("%s", (isset($eventarray['desc']) && !empty($eventarray['desc'])) ?$eventarray['desc'] : 'Default Value'),