Php 如何获取此对象中的结果数?
我有一篇ajax文章,它将JSON转换为如下所示Php 如何获取此对象中的结果数?,php,jquery,arrays,object,Php,Jquery,Arrays,Object,我有一篇ajax文章,它将JSON转换为如下所示 {"0":{"Project_ID":"1","Project_Name":"TEST 1"...}, "1":{"Project_ID":"1","Project_Name":"TEST...etc.` 可以使用result[0]['which Key']或result[1]['which Key']访问的对象。考虑到我的查询只获取了一个项目的信息,大多数数据都是相同的,但我有多个结果的原因是我有适合多个位置或成本中心类别的数据,等等 我不
{"0":{"Project_ID":"1","Project_Name":"TEST 1"...},
"1":{"Project_ID":"1","Project_Name":"TEST...etc.`
可以使用result[0]['which Key']
或result[1]['which Key']
访问的对象。考虑到我的查询只获取了一个项目的信息,大多数数据都是相同的,但我有多个结果的原因是我有适合多个位置或成本中心类别的数据,等等
我不确定如何遍历结果的数量,并在for循环中使用该数字来填充表中的所有值,而不仅仅是索引[0]
中的值
脚本如下所示:
echo "<script type'text/javascript'>
$('#result_year').change(function(event) {
$.post('info.php', { selected_project: $('#selection_project option:selected').val(), selected_year: document.getElementById('result_year').value},
function(data) {
var result = JSON.parse(data);
//maybe an $.each loop here? or
//for(var i=0; i<result.length; i++) <--(but NOT the length, the number of rows?)
var location = result['Location'];
var cccName = result['Cost_Center_Category_Name'];
var ccName = result['Cost_Center_Name'];
var Q_1 = result['Q_1'];
var Q_2 = result['Q_2'];
var Q_3 = result['Q_3'];
var Q_4 = result['Q_4'];
$('.editable').empty();
document.getElementById('MQ'+location+cccName+ccName+'Q_1').innerHTML=Q_1;
document.getElementById('MQ'+location+cccName+ccName+'Q_2').innerHTML=Q_2;
document.getElementById('MQ'+location+cccName+ccName+'Q_3').innerHTML=Q_3;
document.getElementById('MQ'+location+cccName+ccName+'Q_4').innerHTML=Q_4;
}
);
});
</script>;";
echo”
$(“#结果_年”)。更改(功能(事件){
$.post('info.php',{selected_project:$('selected#selection_project option:selected').val(),selected_year:document.getElementById('result#year').value},
功能(数据){
var result=JSON.parse(数据);
//也许每个循环一美元?或者
//对于(var i=0;i您在完成数据库获取后向数组添加字符串键,从而“破坏”了数组:
$results['selected_year'] = ...
Javascript数组只能有连续的数字键。只要数组索引中有间隙,或者数组中有非数字键,json_encode()就会被强制生成JS对象,因为其他任何内容都是非法/无效的Javascript/json
如果要将结果填充到数组中并将其保留为数组,则不要使用字符串键“共享”数据:
$data = array();
while (...) {
$data[] = ... fetch from db ...
}
$results = array();
$results['selected_year'] = ...;
$results['data'] = $data; // put results into its own child array
然后,JS代码中的data['data']
将是一个数组,您可以.length
它。在完成数据库获取后,通过向数组中添加字符串键来“破坏”数组:
$results['selected_year'] = ...
Javascript数组只能有连续的数字键。只要数组索引中有间隙,或者数组中有非数字键,json_encode()就会被强制生成JS对象,因为其他任何内容都是非法/无效的Javascript/json
如果要将结果填充到数组中并将其保留为数组,则不要使用字符串键“共享”数据:
$data = array();
while (...) {
$data[] = ... fetch from db ...
}
$results = array();
$results['selected_year'] = ...;
$results['data'] = $data; // put results into its own child array
然后,JS代码中的data['data']
将是一个数组,您可以.length
它。问题是,您将数据库记录与所选年份和项目的元数据混合到同一个PHP数组中。将记录放入嵌套数组中,这样您就可以对它们进行循环
while($row = $result->fetch_assoc()){
$data[] = $row;
}
$results['selected_year'] = $selected_year;
$results['selected_project'] = $selected_project;
$results['data'] = $data;
$response = json_encode($results);
echo $response;
然后在jQuery代码中,您可以使用result.data.length
获取记录的数量,并使用$.each(result.data,function(index,row){…}循环它们;
问题在于,您正在将数据库记录与所选年份和项目的元数据混合到同一个PHP数组中。请将这些记录放入嵌套数组中,以便循环使用
while($row = $result->fetch_assoc()){
$data[] = $row;
}
$results['selected_year'] = $selected_year;
$results['selected_project'] = $selected_project;
$results['data'] = $data;
$response = json_encode($results);
echo $response;
然后在jQuery代码中,您可以使用result.data.length
获取记录数,并使用$循环它们。每个(result.data,function(index,row){…};
表示了解语句。即使是也不安全!@JayBlanchard哦,不!我会立即这样做!$。每个(result,function(key,object)…)
首先你是如何得到一个对象的?你应该得到一个数组。它应该是[{“Project\u ID”:“1”,“Project\u Name”:“TEST 1”…},{“Project\u ID”:“1”,“Project\u Name”:“TEST…etc.”
说要了解的语句。甚至是不安全的!@JayBlanchard哦,不!我会马上做的!$。每个(结果,函数)(键,对象)…)
你首先是如何得到一个对象的?你应该得到一个数组。它应该是[{“项目ID”:“1”,“项目名称”:“测试1”…},{“项目ID”:“1”,“项目名称”:“测试…等等]
那么,当我进行json_编码时,我是否将两个数组都放在括号内?伟大的思想都是一样的,我们甚至想出了相同的变量名:)因此,当我进行json_编码时,我是否将两个数组都放在括号内?伟大的思想都是一样的,我们甚至想出了相同的变量名:)我现在已经把这些都放在里面了,括号里以var location=result[0]['location'];var cccName…等开头的东西还能用吗?
还是应该把result[index]
或什么的?所有的行都移到result.data
,所以它变成result.data[0].Location
。但是在$中。每个循环都是行。Location
。我现在已经把这些都放在那里了,括号中以var Location=result[0]['Location'];var cccName…等开头的内容是否仍然有效?或者我应该把result[index]放进去吗
或其他什么?所有的行都被移动到结果.data
,因此它变成结果.data[0].Location
。但是在$中。每个循环都是行.Location
。