2015-06-09 34 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); 
} 

希望這有助於 乾杯