这个问题已经问过了,但是没有找到好的答案。
在magento中检索类别和子类别,我使用这个函数:
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('name')
->addAttributeToSort('path', 'asc')
->addFieldToFilter('is_active', array('eq'=>'1'))
->load()
->toArray();
// Arrange categories in required array
$categoryList = array();
foreach ($categories as $catId => $category) {
if (isset($category['name'])) {
$categoryList[] = array(
'label' => $category['name'],
'level' =>$category['level'],
'value' => $catId
);
}
}
之后,如果我简单地使用return $categoryList;
,它将不会返回任何(只是空白)输出,如:
[
[
],
[
],
[
]
]
但是如果我在这种情况下使用return array(array($categoryList));
,它将给出正确的输出。
像这样:(检查json格式)
[
[
[
{
"label": "hello",
"level": "1",
"value": 2
},
{
"label": "hello1",
"level": "2",
"value": 10
},
{
"label": "hello3",
"level": "3",
"value": 17
},
{
"label": "Tunics",
"level": "3",
"value": 18
}
]
]
]
但是有两个括号,我不想要它们,因为我是php的新手,我不知道如何删除它们。
是否有任何方法可以使它正确,或者我必须创建不同风格的数组。
试试这个代码
$categoryList = array();
$i = 0;
foreach ($categories as $catId => $category) {
if (isset($category['name'])) {
$categoryList[$i]['label'] = $category['name'];
$categoryList[$i]['level'] = $category['level'];
$categoryList[$i]['value'] = $catId;
$i++;
}
}
return json_encode( $categoryList);
输出:[{"label":"hello","value":2,"level":"0"},{"label":"hello","value":2,"level":"1"},{"label":"hello","value":2,"level":"2"}]
如果这不起作用,试试
var_dump($categoryList)如果是这样
array(1) {
[0]=>
array(1) {
[0]=>
array(1) {
[0]=>
array(3) {
["label"]=>
string(5) "hello"
["level"]=>
string(1) "1"
["value"]=>
int(2)
}
}
}
}
然后$response = json_encode($categoryList[0][0][0]);
输出:{"label":"hello","level":"1","value":2}
首先,您可以使用Mage::log($myvar, Zend_Log::ERR);
来正确显示您的变量/数组。输出位于根目录/var/log/system.log
然后尝试记录$categoryList;
并检查响应的格式。如果结果中括号太多,可以使用下面这个简单的技巧:
foreach ($categoryList as $category){
Mage::log($category);
}
希望这有帮助欢呼声