我有来自php变量的数据:
$data['value'] = [null, 24.5, 22.5, null, 30.1];
我使用以下代码将其转换为javascript:
var newData = <?php echo json_encode($data, JSON_NUMERIC_CHECK); ?>;
我得到如下输出:, 24.5, 22.5,, 30.1
任何人都可以告诉我的代码有什么问题吗?
更新
PHP变量:
$data['value'][] = null;
$data['value'][] = 24.5;
$data['value'][] = 22.5;
$data['value'][] = null;
$data['value'][] = 30.1;
$data['value2'][] = 20.5;
$data['value2'][] = 19.5;
$data['value2'][] = 30.1;
$data['value2'][] = null;
echo json_encode($data, JSON_NUMERIC_CHECK);
输出:{"value":[null, 24.5, 22.5, null, 30.1],"value2":[20.5,19.5,30.1,null]};
JAVASCRIPT:
var newData = <?php echo json_encode($data, JSON_NUMERIC_CHECK); ?>;
document.write(newData['value']);
输出:, 24.5, 22.5,, 30.1
我需要javascript输出如下:null, 24.5, 22.5, null, 30.1
答案 0 :(得分:2)
您可以使用array_walk
遍历数组中的每个项目,如果它们为null,则将它们转换为字符串。
<?php
$data['value'] = [null, 24.5, 22.5, null, 30.1];
function x(&$el) {
$el = ($el === null) ? 'null' : $el;
}
array_walk($data['value'], 'x');
?>
<script type="text/javascript">
var newData = <?php echo json_encode($data['value'], JSON_NUMERIC_CHECK); ?>;
alert(newData);
</script>
答案 1 :(得分:1)
您没有尝试正确编码数组。
由于您使用的数组实际存储在$data["value"]
而不是$data
,这意味着您没有在JavaScript中正确创建数组。
var newData = <?php echo json_encode($data["value"], JSON_NUMERIC_CHECK); ?>;
<?php
$data[] = [null, 24.5, 22.5, null, 30.1];
for ($i = 0; $i < count($data); $i++) {
for ($j = 0; $j < count($data); $j++)
if ($data[$i][$j] === null) $data[$i][$j] = "null";
?>
<script>
var newData = <?php echo json_encode($data[$i], JSON_NUMERIC_CHECK); ?>
</script>
<?php } // end for ?>