Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP数组创建Javascript数组_Php_Javascript_Jquery_Magento - Fatal编程技术网

从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

我在从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 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 ?>;