JSON/PHP - Empty Array



我正在尝试在我的PHP文件中显示JSON。问题是它没有显示任何东西,就像它是空的一样。

法典

<?php
include ('conexion.php');
//$id = $_GET['id'];
$sql = "SELECT tbl_usuarios.idUsuario, tbl_usuarios.nombrec, tbl_actividades.idUsuario, tbl_actividades.fec_actividad, tbl_actividades.nombre FROM tbl_actividades INNER JOIN tbl_usuarios ON tbl_usuarios.idUsuario = tbl_actividades.idUsuario WHERE tbl_usuarios.idUsuario = 1";
if($conexion){
    if(!$result = mysqli_query($conexion,$sql)) die();
        while($data = mysqli_fetch_array($result)){
            $arreglo[] = $data;
        }
        echo json_encode($arreglo);
    }else{
        die ("error");
    }
?>

它仅在我使用print_r($arreglo)时显示。

您的某些数据库对象是西班牙语的,您的结果数组很可能不是用 utf-8 编码的,$arreglo 不是用 utf-8 编码的。因为西班牙语使用特殊字符,如"ñ",所以您的默认数据库编码很可能不是 utf-8。遇到此类字符时,函数json_encode失败,并且不显示任何内容。 因为这样的函数仅适用于 utf-8 结果。

处理此问题的一种方法是通过此函数传递数组,以便将所有内容转换为 utf-8。 将以下函数添加到您的 PHP 中。

 function cast_data_types ($value) {
      if (is_array($value)) {
        $value = array_map('cast_data_types',$value);
        return $value;
      }
      if (is_numeric($value)) {
        if(strpos('.', $value)===false) return (float)$value;
        return (int) $value;
      }
      return utf8_encode((string)$value);
    }

您还可以应用 JSON_UNESCAPED_UNICODE 以正确显示特殊字符。

所以而不是echo json_encode($arreglo);

您应该输入echo json_encode(cast_data_types($arreglo),JSON_UNESCAPED_UNICODE);

如果上述方法不起作用,您可以随时使用json_last_error() 以检查在json_encode或json_decode操作期间遇到的错误。

http://php.net/manual/es/function.json-last-error.php

最新更新