我有一个PHP数组,我想将其传递给jQuery并更新页面上的行。
此PHP数组是页面上选中的复选框的“名称”。 (因此,此数组可以是任意长度,具体取决于用户选择的内容)
PHP数组:
var_dump($sr->conflict_return);
OUTPUT CHECK: array(5) { [0]=> string(33) "hours_9_7_reg_session_102_905_925" [1]=> string(33) "hours_9_7_reg_session_101_905_925" [2]=> string(33) "hours_9_7_reg_session_103_905_925" [4]=> string(33) "hours_9_7_reg_session_104_845_915" [13]=> string(33) "hours_9_7_reg_session_103_845_905" }
这种情况......我的[php]数组中有'5'个元素。
这是我的问题发挥作用的地方......
有时它“有效”......有时它不会......
'key'似乎是数组中的内容:
OUTPUT CHECK: array(3) { [0]=> string(33) "hours_9_7_reg_session_102_845_905" [1]=> string(33) "hours_9_7_reg_session_101_845_905" [2]=> string(33) "hours_9_7_reg_session_104_845_915" }
这似乎有用..数组中有3个项目..舞台上的所有3行都会突出显示。
这样:
OUTPUT CHECK: array(4) { [0]=> string(33) "hours_9_7_reg_session_102_845_905" [1]=> string(33) "hours_9_7_reg_session_101_845_905" [2]=> string(33) "hours_9_7_reg_session_103_845_905" [4]=> string(33) "hours_9_7_reg_session_104_845_915" }
不起作用......并且没有任何行突出显示
(好像如果数组中有4个项目会破坏??)
我的jQuery解析数据:
var conflictItems = <?=json_encode($sr->conflict_return); ?>;
//has a conflict list
if(conflictItems.length > 0){
alert("Has conflicts");
//loop through and highlight elements on stage
for(i=0; i<conflictItems.length; i++){
console.log(conflictItems[i]);
$("#sr_table_"+conflictItems[i]+"_row").addClass("conflict_border");
}
}
当我跟踪(console.log())数据时....我得到奇怪的结果。
console.log('CONFLICT ITEMS: ' + conflictItems);
console.log('CONFLICT COUNT: ' + conflictItems.length);
数组中的3个项目...以上显示:
CONFLICT ITEMS: hours_9_7_reg_session_103_845_905,hours_9_7_reg_session_102_845_905,hours_9_7_reg_session_104_845_915
CONFLICT COUNT: 3
对我来说是正确的。我从PHP传递的数组中有3个项目.jQuery在列表中运行并为每个'行'添加一个类。
但是,当我添加第4项时......跟踪输出为:
CONFLICT ITEMS: [object Object]
CONFLICT COUNT: undefined
那怎么样?我的阵列变成了一个对象吗?还有更多为什么?
我该如何解决这个问题?我不明白为什么数组中的3个项目有效..但不是4?
答案 0 :(得分:3)
Javascript没有非顺序数组键的概念(您的示例具有键0,1,2和4),因此在数组上运行json_encode
时,它会将其转换为JSON表示法JS对象。
正如@Kenney在评论中所说,一个可能的解决方案是继续使用数组,但是使用带有你的数组的array_values()
函数,并且基本上重新生成数组,删除现有的密钥并使用顺序的密钥。 / p>
答案 1 :(得分:0)
您缺少数组中的索引3,因此js将其转换为对象。