我在PHP中创建一个json编码,如下所示:
$get = mysql_query("SELECT * FROM $table") or die(mysql_error());
$data = array();
while($row = mysql_fetch_assoc($get)){
$data[$row['id']][0] = $row['g'];
$data[$row['id']][1] = $row['w'];
$data[$row['id']][2] = $row['s'];
$data[$row['id']][3] = $row['name'];
$data[$row['id']][4] = $row['type'];
}
$data4 = json_encode($data);
我将它分配给js变量:var bdata;
所以我想要做的就是循环过滤[4] = type。
过滤的内容这是我的循环:
for(var key in bdata){
//stuff here
}
但是这将循环所有这些...但我想只循环具有某个值的[4](类型)的值,让我们说值为“2”。
有办法吗?
答案 0 :(得分:2)
您应该在php中过滤数组并将过滤后的数组传递给JS变量:
function filter($item) {
return $item[4] == $whateverYouWant;
}
$data4 = json_encode(array_filter($data, "filter"));
答案 1 :(得分:1)
您正在遍历行。不是你的专栏。对于每一行,都有一个名为type的列。如果你想处理它,你可以获取它。他们正在构建JSON,它很快就会在JS方面不可读,你会拉扯你的头发。
所以最好有命名键。
你应该以这种方式完成它,
$get = mysql_query("SELECT id, g, w, s, name, type FROM $table")
or die(mysql_error());
// If you only need to fetch the type then just list `type` on the above list.
$data = array();
while($row = mysql_fetch_assoc($get)){
$data[] = $row;
// or
// $data[$row['id']] = $row;
}
$data4 = json_encode($data);
在JS端。
for(var key in bdata){
var type = bdata[key].type;
// process type
}
答案 2 :(得分:0)
如果整个数组存储在JS中的单个变量中,则必须遍历所有键值对,无论它们是否具有您想要的ID。
您需要检查每个kvp以查找您要查找的ID。像这样的东西
foreach(var key in bdata)
{
if (key.id === 4)
{
//do your stuff here
}
}
以这种方式循环非常便宜,因此花费太多时间通过完全跳过一些元素来优化它是没有意义的。