在php中返回数组内部的多维数组或数组

时间:2015-06-09 08:17:04

标签: php arrays magento multidimensional-array magento-1.9

这个问题已经问到,但没有找到任何好的答案。

要检索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的新手,我对如何删除它们没有多少想法。

是否有任何方法可以使它正确或我必须创建具有不同风格的数组。

2 个答案:

答案 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);
}

希望这有帮助 干杯