2017-07-25 90 views
0

我有以下函數可以幫助我獲取類別名稱。函數打印一個數組,但調用時返回null php

public function getParent($categoryId, $keepData) { 
    $parentCategory = Category::select('category_id', 'parent_id', 'title') 
           ->where('category_id', $categoryId)->first(); 

    if($parentCategory->parent_id > 0) { 
     $parent = Category::select('category_id','parent_id','title') 
          ->where('category_id',$parentCategory->parent_id) 
          ->first(); 
     $keepData[$parent->category_id] = $parent->title; 
     $this->getParent($parent->category_id, $keepData); 
    } else { 
     //print_r($keepData); 
     return $keepData; 
    } 
} 

當我做print_r裏面的功能它打印一個數組。

array:2 [▼ 
    3 => "Stock Boxes" 
    1 => "Boxes" 
] 

但調用其他功能,因爲這功能,

$keepData = array(); 
$breadcrumb = $this->getParent($categoryId, $keepData); 
print_r($breadcrumb); 

然後返回null

我錯過了什麼步驟。任何幫助都會很棒。

+0

什麼是在你的預期數據如果'parnet_id = 0'' $ keepData'將會返回null;' –

+0

將空'$ keepData'傳遞給'getParent()'的目的是什麼? –

+0

嘗試在您的方法中傳遞'$ keepData'作爲參考變量,它應該返回您的值。 –

回答

0

顯然這個條件

if ($parentCategory->parent_id > 0) { 
    // ... 
} 

計算結果爲true,並在該塊中,不返回任何東西,這就是爲什麼在方法調用返回有效null

調整方法

public function getParent($categoryId, array $keepData = []) 
{ 
    $parentCategory = Category::select('category_id', 'parent_id', 'title')->where('category_id', $categoryId)->first(); 

    if ($parentCategory->parent_id > 0) { 
     $parent = Category::select('category_id','parent_id','title')->where('category_id',$parentCategory->parent_id)->first(); 
     $keepData[$parent->category_id] = $parent->title; 

     return $this->getParent(
      $parent->category_id, 
      $keepData 
     ); 
    } 

    return $keepData; 
} 

並調用像這樣(注意如何$keepData變成可選參數,默認爲空數組):

$breadcrumb = $this->getParent($categoryId); 
+0

Thnx ...你是一個救星。它像一個魅力。 – mayur