我从结果中返回一个mysql数组,并希望自动将结果输出到JSON返回或XML的一部分(除此之外还包括其他内容),并希望使用简单的循环函数进行输出。除了重复数组索引/键之外,它工作得很好。例如:
[23] => 21.00
[cost] => 21.00
[24] => 0.00
[costproduct] => 0.00
[25] => 21.00
[costtotal] => 21.00
我希望它没有重复就干净。我用来循环的简单代码是:
function array_loop_output( $array, $format = 'json', $output = '' ){
if(is_array($array)){
foreach($array as $key => $value){
if(is_array($value)){
if($format == 'xml'){
$output .= '<' . $key . '>';
$output .= array_loop_output( $value, $format );
$output .= '</' . $key . '>';
}else{
$output[$key] = array_loop_output( $value, $format );
}
}else{
if($format == 'xml'){
if(is_numeric($value)){
$output .= xmltagstring(array('tag'=>$key,'value'=>$value))."\n";
}else{
$output .= xmltagstring(array('tag'=>$key,'value'=>$value,'cdata'=>true))."\n";
}
}else{ // json
if(is_numeric($value)){
$output[$key] = $value;
}else{
$output[$key] = forjson($value);
}
}
}
}
}
return $output;
}
有没有一种干净的方法可以做到这一点,因为我认为我有一个金发碧眼的时刻?非常感谢。
答案 0 :(得分:1)
包含数字键和关联键的结果类型是由于使用了一个获取数组函数:
mysqli_result::fetch_array()
PDO::FETCH_BOTH
mysql_fetch_array()
如果您使用assoc
代替array
,结果将只包含[string]关联键:
mysqli_result::fetch_assoc()
PDO::FETCH_ASSOC
mysql_fetch_assoc()