【发布时间】:2013-05-23 18:11:18
【问题描述】:
我在从 PHP 数组转换为 Javascript 数组然后访问该值时遇到问题。我试过 JSON 编码和解码。
PHP:
$simpleArray= [];
$childProducts = Mage::getModel('catalog/product_type_configurable')
->getUsedProducts(null,$_product);
foreach($childProducts as $child) { //cycle through simple products to find applicable
$simpleArray[$child->getVendor()][$child->getColor()] = $child->getPrice();
var_dump ($simpleArray);
}
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>');
}
编辑: 我已经摆脱了 php 中的 simpleArrayJson 声明并更改了 javascript 的第一行。
【问题讨论】:
-
不要 json_decode 它,你想要它的 json 格式。我对php不太熟悉,但是你的第二个sn-p第一行中的
(array)是什么? -
这是 PHP json_encode 文档中某人的建议。我已将其删除。我现在只有 var simpleArray = =json_encode($simpleArray)?>;我现在的问题是像访问数组一样访问值:simpleArray[i][colorSelected]。除了 $child->getPrice() 是美元值之外,所有变量都是整数。
-
我不明白为什么您的 console.log 中会出现
function Array() { [native code] }。你用什么浏览器测试? -
chrome...嗯...在 Firefox 中看起来很糟糕。
-
哦,对不起,那是在我把 json_encode 放在那里之前。它记录一个对象。同样,现在我只需要能够访问该值 simpleArray[i][colorSelected]。那里的那些变量将是整数。
标签: php javascript jquery magento