如何从javascript数组中打印null值?

时间:2017-04-03 09:34:39

标签: javascript php arrays

我有来自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

2 个答案:

答案 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 ?>