将mysql结果数组auto循环到JSON数组或XML密钥复制中

时间:2013-07-04 12:09:50

标签: php arrays

我从结果中返回一个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;

}

有没有一种干净的方法可以做到这一点,因为我认为我有一个金发碧眼的时刻?非常感谢。

1 个答案:

答案 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()