为什么回显 JSON 编码的数组不会产生任何输出


Why echoing JSON encoded arrays won't produce any output

我有一个包含 19elements 的小数据库,这是我检索数据库的 PHP 函数:

function retrieveDB(){
    $tempDB=array();
    $database=new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
    if(mysqli_connect_errno()){ 
        echo "Errore in connessione al database: ".mysqli_connect_error();
        exit();
    }
    $query="SELECT * FROM dr ORDER BY indice;";
    $risultato=$database->query($query);
    while($row = $risultato->fetch_assoc()){
        $tempDB[]=$row;
    }
    $database->close();
    return $tempDB;
}

我都试过了

$temp=retrieveDB();
echo json_encode($temp);

foreach($temp as $t){
echo json_encode($t);}

但它似乎只在 3 上打印了 19 个元素,跳过了其他元素。这是我的输出:

{"indice":"1","domanda":"Quale principio attivo fa passare quel brutto mal di vivere?","risposta":"PARACETAMOLO","visibile":"1"}

{"indice":"4","domanda":"SARTANO utilizzato nella profilassi dell'ictus?","risposta":"LOSARTAN","visibile":"1"}






{"indice":"18","domanda":"Quale farmaco aumenta la concentrazione ematica della digossina? ","risposta":"VERAPAMIL","visibile":"1"}

我还用utf8编码了值。有什么建议吗?

您从数据库中检索的字符串未编码为 UTF-8(我认为它们是 ISO-8859-1)。这就是json_encode()失败的原因。它会触发一条警告,指出json_encode(): Invalid UTF-8 sequence in argument但您的设置可能不允许 PHP 显示错误。

error_reporting(E_ALL & ~E_NOTICE); ini_set('display_errors', '1');放在脚本顶部的某个地方,你会看到它们。