gpt4 book ai didi

php - 如何获取 json 对象中数组的长度?

转载 作者:行者123 更新时间:2023-11-29 22:31:14 24 4
gpt4 key购买 nike

我在 php 中创建了一个 json 对象并将其发送回主页:

$invSlots = array();
$invSlots['slots'] = array();

for( $i = 1; $i < $player_max_slots+1; $i++){ //player max slots comes from db

$invSlots['slots'][$i] = $inventory_info3[$i];

}

$json = $invSlots;
$encoded = json_encode($json);
die ($encoded);

帖子回复是这样的:

{"slots": {
"1": "1",
"2": "0",
"3": "0",
"4": "4",
"5": "0",
"6": "0",
"7": "3",
"8": "0",
"9": "0",
"10": "0",
"11": "2",
"12": "0"
}
}

我正在尝试像这样获取插槽的数量:

var myResponse = JSON.decode('(' + responseText + ')'); //decode server json response
maxSlots = myResponse.slots.length; //set max slots

但是 myResponse.slots.length 只是返回 undefined,我该如何解决?

最佳答案

slots 不是数组,它是另一个对象。如果它被序列化为一个数组,它可能看起来更像:

{ "slots": 
[
{ "0": "1" },
{ "1": "0" },
{ "2": "0" },
...
]
}

甚至只是:

{ "slots": [ "1", "0", "0" ] }

尝试将循环更改为:

for ($i = 0; $i < $player_max_slots; $i++) { //player max slots comes from db
$invSlots['slots'][$i] = $inventory_info3[$i];
}

正如 Zimzat 在上面的评论中所说,一旦数组的索引从 0 开始,当您将对象序列化为 JSON 时,您应该得到一个 slot 数组。

实际上,根据 php.net 论坛上的一些人的说法,您需要了解索引数组。

<?php
echo json_encode(array("test","test","test"));
echo json_encode(array(0=>"test",3=>"test",7=>"test"));
?>

将给予:

["test","test","test"]
{"0":"test","3":"test","7":"test"}

仅当您未定义索引,或者您的索引是连续的且从 0 开始时,才会返回数组。

关于php - 如何获取 json 对象中数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com