似乎无法将数组转换为JSON PHP

似乎无法将数组转换为JSON PHP,php,arrays,json,Php,Arrays,Json,因此,我正在使用php和javascript进行piechart google可视化,但我似乎无法实现json转换 以下是我的php代码: $sql = "select pNavn, antallTimer from Prosjekter where userId=".$userId; $result = hentData($sql); $orders = array(array('Prosjekt navn', 'Antall Timer')); /* Extract the informat

因此,我正在使用php和javascript进行piechart google可视化,但我似乎无法实现json转换

以下是我的php代码:

$sql = "select pNavn, antallTimer from Prosjekter where userId=".$userId;
$result = hentData($sql);
$orders = array(array('Prosjekt navn', 'Antall Timer'));
/* Extract the information from $result */
while ( $rad = mysqli_fetch_assoc($result) ) {
    $temp = array($rad['pNavn'], $rad['antallTimer']);
    array_push($orders, $temp);
}
$orders=json_encode($orders);
var_dump($orders);
我在这里看了一点,但是人们说的转换正在工作,我似乎无法工作。我试过:

json_encode(
    iconv(
        mb_detect_encoding($orders, mb_detect_order(), true),
        'UTF-8',
        $orders
    )
)

第一个给出了数组而不是字符串的
$orders
的错误原因,第二个没有给出任何错误,但是
$orders
var\u dump
仍然为false

我得到的变量_转储:

array (size=5)
0 => 
array (size=2)
  0 => string 'Prosjekt navn' (length=13)
  1 => string 'Antall Timer' (length=12)
1 => 
array (size=2)
  0 => string 'Mitt F�rste Prosjekt' (length=20)
  1 => string '72' (length=2)
2 => 
array (size=2)
  0 => string 'Mitt Andre Prosjekt' (length=19)
  1 => string '20' (length=2)
3 => 
array (size=2)
  0 => string 'MItt tredje prosjekt' (length=20)
  1 => string '5' (length=1)
4 => 
array (size=2)
  0 => string 'et fjerde prosjekt' (length=18)
  1 => string '0' (length=1)
我需要帮助的是让JSON能够处理这个问题
请帮助,这里绝望:)

您的问题不清楚您希望输出是什么,但似乎您希望将mysql获取的值添加到您创建的数组中,作为$orders的子数组。也许你想做这样的事:

$columns = array(
    array('label' => 'Prosjekt navn', 'type' => 'string'),
    array('label' => 'Antall Timer', 'type' => 'number')
);
$orders = array($columns);
/* Extract the information from $result */
while ( $rad = mysqli_fetch_assoc($result) ) {
    $row = array($rad['pNavn'], $rad['antallTimer']);
    array_push($orders, $row);
}
$orders=json_encode($orders);
var_dump($orders);
更新: 根据您对Google visualization API的使用情况,将JSON数据输入arrayToDataTable方法看起来不正确。文档说明您的数据需要格式化,如示例所示:

var data2 = google.visualization.arrayToDataTable([
    [{label: 'Country', type: 'string'},
    {label: 'Population', type: 'number'},
    {label: 'Area', type: 'number'},
    {type: 'string', role: 'annotation'}],
    ['CN', 1324, 9640821, 'Annotated'],
    ['IN', 1133, 3287263, 'Annotated'],
    ['US', 304, 9629091, 'Annotated'],
    ['ID', 232, 1904569, 'Annotated'],
    ['BR', 187, 8514877, 'Annotated']
]);

根据该格式,第一行应包含标签和类型符号,其余行应为数据。我已经更新了上面的代码以反映这种格式。这是未经测试的,但应该接近您需要的Googl可视化API。

我找到了它,并让它开始工作。谢谢你帮助我沿着正确的道路走下去。结果证明这是utf-8编码的问题。工作守则如下:

$sql = "select pNavn, antallTimer from Prosjekter where userId=".$userId;
    $result = hentData($sql);
$table = array();
$table['cols'] = array(
array('label' => 'Prosjekt Navn', 'type' => 'string'),
array('label' => 'Timer', 'type' => 'number')
);

$rows = array();
while($r = mysqli_fetch_assoc($result)) {
$temp = array();
$temp[] = array('v' => iconv(mb_detect_encoding($r['pNavn'], mb_detect_order(), true), "UTF-8", $r['pNavn']));
$temp[] = array('v' => (int) $r['antallTimer']);
$rows[] = array('c' => $temp);
}

$table['rows'] = $rows;

$jsonTable = json_encode($table);

您从var_转储中获得了什么JSON输出?您希望从中获得什么JSON输出?我从var转储中获得的var转储如下:C:\wamp\www\php\php prosjekt 16\statistikk.php:21:boolean false我想要的是$orders成为JSON字符串,我可以将其输入var data=google.visualization.arrayToDataTable();var options={title:“Timer fordelt påprosjekter”};var chart=new google.visualization.PieChart(document.getElementById(“timer_PieChart”);chart.draw(数据、选项);}不是我真正想要的,我已经用更多的信息更新了这个问题,以及我想要JSON与之合作的内容。答案更新以反映Google API需要什么。
$sql = "select pNavn, antallTimer from Prosjekter where userId=".$userId;
    $result = hentData($sql);
$table = array();
$table['cols'] = array(
array('label' => 'Prosjekt Navn', 'type' => 'string'),
array('label' => 'Timer', 'type' => 'number')
);

$rows = array();
while($r = mysqli_fetch_assoc($result)) {
$temp = array();
$temp[] = array('v' => iconv(mb_detect_encoding($r['pNavn'], mb_detect_order(), true), "UTF-8", $r['pNavn']));
$temp[] = array('v' => (int) $r['antallTimer']);
$rows[] = array('c' => $temp);
}

$table['rows'] = $rows;

$jsonTable = json_encode($table);