在php中返回集合或多维数组或数组中的数组



这个问题已经问过了,但是没有找到好的答案。

在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);
}

希望这有帮助欢呼声

相关内容

  • 没有找到相关文章

最新更新