这个问题已经问到,但没有找到任何好的答案。
要检索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的新手,我对如何删除它们没有多少想法。
是否有任何方法可以使它正确或我必须创建具有不同风格的数组。
答案 0 :(得分:0)
试试这段代码
$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}
答案 1 :(得分:0)
首先,您可以使用Mage::log($myvar, Zend_Log::ERR);
来正确显示您的变量/数组。输出在根目录/ var / log / system.log
然后尝试记录$categoryList;
并检查您的回复格式。如果你在结果中有太多括号,你可以使用这个简单的黑客:
foreach ($categoryList as $category){
Mage::log($category);
}
希望这有帮助 干杯