从行到字符串的强制转换(mysqli fetch_array)


cast from row to string (mysqli fetch_array)

我有一个mysqli查询,我想将其转换为json。

已尝试:

$myArray = array();
while ($row = mysqli_fetch_array($result)) { 
    $myArray[] = $row;
}
$ot = json_encode($myArray);
print_r($ot); 

但没有得到结果(空行)。如果我打印_r$myArray,就会有值。

我可以在while循环中打印出正确的值,所以制作了另一个数组并尝试添加它们,但以下两项都不起作用:

$mA []=array (alumnoX => $al1, grupox=> "two");
$mA []=array (alumnoX => (string)$al1, grupox=> "two");
$mA []=array (alumnoX => strval($al1), grupox=> "two");
$mA []=array (alumnoX => $row['alumno'], grupox=> "two");

我该怎么解决这个问题?

编辑--($myArray的print_r)

Array ( 
    [0] => Array ( 
              [0] => Martín 
              [alumno] => Martín 
              [1] => 1A 
              [grupo] => 1A 
              [2] => Computación básica 
              [materia] => Computación básica 
              [3] => sala cómputo cs 01 
              [salon] => sala cómputo cs 01 
              ) 
     [1] => Array ( 
              [0] => Martín 
              [alumno] => Martín 
              [1] => 1A 
              [grupo] => 1A 
              [2] => Introducción a la música 
              [materia] => Introducción a la música 
              [3] => Auditorio [salon] => Auditorio 
              ) 
      ) 

使用mysqli_fetch_array()时,将返回一个关联数组和一个数字索引数组,这将复制所有列并混淆您和json对象。因此,请使用mysqli_fetch_array($result,MYSQLI_ASSOC)mysqli_fetch_assoc($result),以便只返回更有用的关联数组。

// assume you have code something like this
$result = mysql_query($con, $sql);
if ( ! $result ) {
    echo mysqli_error($con);
    exit;
}

$myArray = array();
//while ($row = mysqli_fetch_array($result)) { 
while ($row = mysqli_fetch_assoc($result)) { 
    $myArray[] = $row;
}
$ot = json_encode($myArray);
//print_r($ot); print_r() works on arrays and $ot is now a string
echo "<pre>$ot</pre>";

替换后,数据中有一些非常规字符:

json_encode($myArray );

至:

json_encode($myArray, JSON_UNESCAPED_UNICODE );

它如预期的那样工作。