2015-06-09 28 views
1

这个问题已经问过,但是没有找到任何好的答案。在php中返回集合或者多维数组或者数组arrays

要检索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

你摸不着头脑?我遇到了同样的问题,不知道该怎么做。如果我找到解决方案,会回答。 – Vic

回答

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($所属分类),如果是这样的

array(1) { 
    [0]=> 
     array(1) { 
     [0]=> 
     array(1) { 
      [0]=> 
      array(3) { 
      ["label"]=> 
      string(5) "hello" 
      ["level"]=> 
      string(1) "1" 
      ["value"]=> 
      int(2) 
      } 
     } 
     } 
    } 

t母鸡

$response = json_encode($categoryList[0][0][0]); 

输出:

所有的
{"label":"hello","level":"1","value":2} 
+0

如果我使用'return json_encode($ categoryList);'输出来就像'[{\“label \”:\“hello \”,\“level \”:\“1 \”,\“value \”: 2},{\ “标签\”:\ “hello1 \”,\ “电平\”:\ “2 \” \ “值\”:10},{\ “标签\”:\ “上装\”, \“level \”:\“3 \”,\“value \”:17}]',这是不可接受的格式 – Spartan

+0

从这些\(反斜杠)到来,请分享您的$类别 – GauravGD

+0

gaurav如果我使用'echo json_encode($ categoryList);'输出几乎是正确的,但最后得到null请参阅:'[{“label”:“hello”,“level”:“1”,“value”:2},{“label” :“hello1”,“level”:“2”,“value”:10},{“label”:“hello2”,“level”:“3”,“value”:17}] null' – Spartan

0

首先,你可以使用Mage::log($myvar, Zend_Log::ERR);正确显示您的变量/数组。 outpout位于根目录/ var/log/system.log中

然后尝试登录$categoryList;并检查响应的格式。如果您在结果中有太多的支架,你可以使用这个简单的黑客:

foreach ($categoryList as $category){ 
    Mage::log($category); 
} 

希望这有助于 干杯