在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']
);
您可以使用
isset()
来检查元素是否存在(并且未null
(:
isset($eventarray['gas']) ? $eventarray['gas'] : 'defaultvalue'
注意:如果null
是可能的值,您不希望使用默认值,则不能使用isset
,而必须改用array_key_exists($eventarray, 'gas')
。
您可以使用三元运算符来检查其是否存在,并设置默认值。
它的工作方式是:(条件(?[如果为真] : [ 如果为假]
...
"gas" => (isset($eventarray['gas'])) ? $eventarray['gas'] : 'default',
使用这个
array_key_exists('gas', $somearr);
http://www.php.net/manual/en/function.array-key-exists.php
首先使用默认值初始化$somearr数组:
$somearr = array(
'actiontaken' => 'default action',
'actionname' => 'default action name',
etc.. );
然后循环遍历$eventarray:
foreach( $eventarray as $event => $eventval ) {
$somearr[$event] = $eventval;
}
使用三元运算符:
"actiontaken"=>sprintf("%s", (isset($eventarray['desc']) && !empty($eventarray['desc'])) ?$eventarray['desc'] : 'Default Value'),