这是我用json格式编码的对象结构:
public static function getAllDataFromTableWithWhere($table,$fields=array(),$key=array(),$key_values=array(),$key_alias=array(),$is=true,$and=true,$orderby){
$database = DatabaseFactory::getFactory()->getConnection();
$table = stripslashes(strtolower($table));
$fields = implode("`, `", $fields);
#Debug::debugInput('FIELDS',$fields);
if($is){
$sql = "SELECT `$fields` FROM $table WHERE "; #`$key` = ':key_id' ORDER BY `$orderby` ASC";
if($and){
for($j=0;$j<count($key);$j++){
$sql .= "`".$key[$j]. "` = ".$key_alias[$j]." AND ";
}
$sql = substr($sql,0,-4);
}else{
for($j=0;$j<count($key);$j++){
$sql .= "`".$key[$j]. "` = ".$key_alias[$j]." ";
}
$sql = substr($sql,0,-1);
}
}else{
$sql = "SELECT `$fields` FROM $table WHERE "; #`$key` LIKE `:key_id` ORDER BY `$orderby` ASC";
if($and){
for($j=0;$j<count($key);$j++){
$sql .= "`".$key[$j]. "` = ".$key_alias[$j]." AND ";
}
$sql = substr($sql,0,-4);
}else{
for($j=0;$j<count($key);$j++){
$sql .= "`".$key[$j]. "` = ".$key_alias[$j]." ";
}
$sql = substr($sql,0,-1);
}
}
$sql .= " ORDER BY $orderby";
$data = Helpers::join2ArAliasAndArValue($key_values,$key_alias);
#Debug::debugInput('SQL',$sql);
#Debug::debugInput('DATA',$data);
$query = $database->prepare($sql);
$query->execute(array(':idkey_val' => $key_values[0]));
return $query->fetchAll();
}
如何使用javascript访问每个值?
也许如果我想获得所有关键值,如简单的数组列表格式:
[
{"playerid":"1","score":"10"},
{"playerid":"2","score":"40"},
{"playerid":"3","score":"20"},
{"playerid":"4","score":"9"},
{"playerid":"5","score":"20"}
]
因为如果我应用playerid = ["1","2","3","4","5"]
score = ["10","40","20","9","20"]
,它将返回正确获取的所有数据。但是,如果我尝试使用对象表示法来访问特定值,例如使用console.log(data)
或console.log(data.playerid)
,则返回undefined。
有什么建议吗?
答案 0 :(得分:1)
这是因为您使用的是JSON编码数据。
只需使用JSON.parse()解码即可。而不是将其作为对象访问。
答案 1 :(得分:1)
考虑到data
是您在此处提供的数组,您无法访问console.log(data.playerid)
,因为此数组没有任何playerid
属性。
您需要遍历此数组,然后逐个从对象中提取每次迭代中所需的值。
var playersArray = [
{"playerid":"1","score":"10"},
{"playerid":"2","score":"40"},
{"playerid":"3","score":"20"},
{"playerid":"4","score":"9"},
{"playerid":"5","score":"20"}
];
var ids = [];
var scores = [];
playersArray.forEach(function( player ){
var playerid = player.playerid;
var score = player.score;
ids.push( playerid );
scores.push( score );
});//forEach();
console.log( ids );
console.log( scores );
&#13;
答案 2 :(得分:1)
使用索引解析数据并访问数组元素:
JSON.parse(data)[0].playerid
看到所有球员:
var parsed = JSON.parse(data);
for(int i = 0; i < parsed.length; i++) {
console.log(parsed[i].playerid);
console.log(parsed[i].score);
}
答案 3 :(得分:0)
围绕数据的方括号[]
表示最外层的结构是数组,而不是对象。
数组内部有几个对象,如{}
大括号所示。
为了访问内部数据,您必须首先使用数字索引从数组中选择一个项目。
从数组中选择第一个对象:
data[0] // {playerid:"1",score:"10"}
要访问该对象中的属性,可以使用对象表示法:
data[0].playerid // "1"
您还可以遍历数组中的项目以访问所有对象:
data.forEach((item)=>{
console.log(item);
});