从PHP数组创建Javascript数组
我在从PHP数组转换为Javascript数组,然后访问值时遇到问题。我尝试过JSON编码和解码 PHP: Javascript:从PHP数组创建Javascript数组,php,javascript,jquery,magento,Php,Javascript,Jquery,Magento,我在从PHP数组转换为Javascript数组,然后访问值时遇到问题。我尝试过JSON编码和解码 PHP: Javascript: var simpleArray = <?=json_encode($simpleArray)?>; //..lots of unrelated code for(var i=0; i < IDs.length; i++) { console.log(simpleArray); //which color id is selec
var simpleArray = <?=json_encode($simpleArray)?>;
//..lots of unrelated code
for(var i=0; i < IDs.length; i++)
{
console.log(simpleArray);
//which color id is selected
var colorSelected = $j("#attribute92 option:selected").val();
console.log('Value of color selected is ' + colorSelected);
$j('.details'+data[i].vendor_id).append('<li class="priceBlock">$'+simpleArray[i][colorSelected]+'</li>');
}
var simpleArray=;
//…很多不相关的代码
对于(变量i=0;i$'+simpleArray[i][colorSelected]+'');
}
编辑:
我已经去掉了php中的simpleArrayJson声明,并更改了javascript的第一行。尝试一个for in循环
for( item in data ) {
console.log(data[item]);
}
这是因为json的键与json_编码的数组的索引相匹配,而不一定是0->n索引
编辑感谢将注释更改为data.item
至data[item]
从php中删除
$simpleArrayJson=json_encode($simpleArray, JSON_FORCE_OBJECT);
这里将php数组转换为json字符串
javascript中的更改
var simpleArray = <?= json_encode($simpleArray, JSON_FORCE_OBJECT); ?>;
您没有理由
json\u decode()
尝试输出的值。直接回应一下:
var simpleArray = <?= $simpleArrayJson ?>;
var simpleArray=;
这将输出一个javascript对象文本。不要对其进行json解码,您需要json格式。我对php不太熟悉,但是在第二段第一行中,
(array)
是做什么的呢?这是有人在php json_encode文档中提出的建议。。我把它拿走了。我现在只需要var simpleArray=;我现在的问题是像数组一样访问值:simpleArray[i][colorSelected]。除了$child->getPrice()这是一个美元值之外,所有变量都是整数。我不明白为什么您在console.log中得到函数数组(){[native code]}
。你在测试什么浏览器?chrome。。。六羟甲基三聚氰胺六甲醚。。。我会看看firefox。哦,对不起,那是在我把json_编码放进去之前。它记录一个对象。同样,现在我只需要能够访问simpleArray[I][colorSelected]的值。其中的变量将是整数。var simpleArray=;我剩下的代码没有work@CaitlinHavener这是因为simpleArray
不是数字索引数组。它是一个对象文本。您需要修改编码为JSON的数据结构,或者修改在javascript中如何使用它。看一看输出的结构,更好地理解如何使用它。@CaitlinHavener好的,我想回到基础。你知道PHP中数字索引数组和关联数组的区别吗?在javascript中,您知道数字索引数组和对象(javascript中最接近关联数组的对象)之间的区别吗?您知道在PHP中,您似乎在构建关联数组(除非$child->getVendor()
返回整数值)?此外,当您将JSON\u FORCE\u OBJECT
标记与JSON\u encode()
一起使用时,即使您有一个数字索引数组,也会导致在JSON序列化中形成一个对象。然后尝试使用数字索引访问JS中的simpleArray
,这是无法创建的。如果您有一个javascript对象,则需要对其进行访问。或者,您可以在PHP中构建真正的基于0的数字索引数组,而不使用JSON_FORCE_OBJECTAhhh。。它是PHP中的数字索引数组。$child->getVendor()和$child->getColor()值是整数。我已经删除了force对象,但它仍然是一个json对象。我需要能够访问示例simpleArray[4][5]的值,例如1.50。我不知道该怎么做。在“编辑”下,您可以看到我更改了什么。对于(simpleArray中的项){console.log(simpleArray.item);}不应该是console.log(item)
或console.log(data[item])
console.log(data.item)
错误,除非data
具有item
属性。
var simpleArray = <?=(array) json_decode($simpleArrayJson)?>
var simpleArray = Array;
var simpleArray = <?= $simpleArrayJson ?>;