[英]PHP Array to JavaScript Length
我写了这段代码:
$userAddresses = $database->getUsers("SELECT * FROM Users");
$address = array();
foreach($userAddresses as $user){
array_push($address, array("address"=> $user['address'],
"zipcode" => $user['zipcode']));
}
$locations = array(
"locations" => $address
);
$jsonLocations = json_encode($locations);
此代码返回此json对象:
{"locations":[
{"address":"Sneekermeer 25","zipcode":"2993 RL"},
{"address":"Boeier 13","zipcode":"2992 AK"}]}
我想在JavaScript中获取此数组的长度。 所以我这样做:
var address = '<?php echo $jsonLocations ?>';
之后,我调用了console.log(address.length);
来检查长度,但是要检查它如何计算地址变量中的所有字符(我认为是108)并将其作为长度返回。 address.locations.length
也不起作用。
有人可以帮我吗?
您可以使用JSON.parse()
var address = JSON.parse('<?php echo $jsonLocations ?>');
console.log(address.length); // will give you length;
那是因为字符串需要解码为一个对象。 您可以通过以下两种方法之一来执行此操作。
不推荐:
var address = <?= $jsonLocations ?>;
或更正确,更安全:
var address = JSON.parse('<?= addslashes(json_encode($jsonLocations)) ?>');
不要忘了对addslashes
的调用,以防止数组中的任何单引号破坏JavaScript字符串。
您可以删除var address = '<?php echo $jsonLocations ?>';
周围的引号var address = '<?php echo $jsonLocations ?>';
(即var address = <?php echo $jsonLocations ?>;
)或使用JSON.parse
将其解析为对象的字符串。
我已经尝试了以下及其工作
var address = '{"locations":[{"address":"Sneekermeer 25","zipcode":"2993 RL"},{"address":"Boeier 13","zipcode":"2992 AK"}]}';
address = JSON.parse(address);
console.log(address.locations.length);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.