2

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

}

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

4

1 回答 1

1

具有数字键和关联键的结果类型是由于使用了 fetch 数组函数之一:

  • mysqli_result::fetch_array()
  • PDO::FETCH_BOTH
  • mysql_fetch_array()

如果您使用assoc而不是array,结果将只包含 [string] 关联键:

  • mysqli_result::fetch_assoc()
  • PDO::FETCH_ASSOC
  • mysql_fetch_assoc()
于 2013-07-04T16:23:49.057 回答