2014-10-06 18 views
1
array (size=3) 
0 => 
    object(stdClass)[20] 
    public 'id' => string '12' (length=2) 
    public 'cities' => string 'narayangarh' (length=11) 
    public 'c_id' => string '24' (length=2) 
    public 'places' => string 'pulchowk' (length=8) 
1 => 
    object(stdClass)[21] 
    public 'id' => string '13' (length=2) 
    public 'cities' => string 'narayangarh' (length=11) 
    public 'c_id' => string '24' (length=2) 
    public 'places' => string 'sahidchowk' (length=10) 
2 => 
    object(stdClass)[22] 
    public 'id' => string '14' (length=2) 
    public 'cities' => string 'narayangarh' (length=11) 
    public 'c_id' => string '24' (length=2) 
    public 'places' => string ' lionschowk' (length=11) 

在此陣列中,存在一個共同的cities「納拉英格阿爾」具有共同'c_id'被重複三次,並且有不同的'places'不同'id'。我怎樣才能得到輸出,如:製造陣列獨特並顯示其重複子

  • 納拉英格阿爾
    • pulchowk
    • sahidchowk
    • lionschowk

所以這是納拉英格阿爾'是父母 'pulchowk',「sahidchowk '和'lionschowk'是孩子。我無法通過正常的foreach循環來實現。是否可以通過array_unique()

回答

0

讓我們假裝你的城市目前存儲在一個名爲$ a的數組中。

  1. 通過$創建附加陣列或地圖$ B
  2. 環路一個
  3. 追加A->地方到B [C_ID] - >放置現在
  4. 你的城市是在變量$ b在冷凝表格

例如。

$b = array(); 
foreach ($a as $city) { 
    // If city already is in "$b" 
    if (array_key_exists($city->c_id, $b)) { 
    array_push($b[$city->c_id]->places, $city->places); 
    } else { 
    $b[$city->c_id] = $city; 
    $b[$city->c_id]->places = array($city->places); 
    } 
} 
var_dump($b); 

array (size=1) 
0 => 
    object(stdClass)[20] 
    public 'id' => string '12' (length=2) 
    public 'cities' => string 'narayangarh' (length=11) 
    public 'c_id' => string '24' (length=2) 
    public 'places' => array (size=3) 
       0=> string 'pulchowk' (length=8)     
       1=> string 'sahidchowk' (length=10) 
       2=> string 'lionschowk' (length=11) 

編輯:$ B [$城市]更改了$ b [$都市>的c_id] 交換array_key_exists代碼塊與其他代碼塊

+0

OK謝謝。我會嘗試。並讓你知道。 – user254153 2014-10-06 03:27:39

+0

它只提取最後一個數組。 'lionschowk'。 PHP給出的錯誤:array_push()期望參數1是數組,null給出 – user254153 2014-10-06 05:49:42

+0

這很有道理,爲什麼這麼說。我做了另一個修復。現在應該工作。 – Mike 2014-10-06 15:27:20