2011-12-25 73 views
0

我無法繞我的頭圍繞此。我缺少的是邏輯位。PHP的foreach按鍵/值排序

我有此$ myArray的:

array(3) { 
    [0]=> 
    array(2) { 
    ["lang"]=> 
    string(4) "en" 
    ["url"]=> 
    string(42) "http://feeds.feedburner.com/wordpress/haJM" 
    } 
    [1]=> 
    array(2) { 
    ["lang"]=> 
    string(4) "en" 
    ["url"]=> 
    string(37) "http://feeds.feedburner.com/hackaday/LgoM" 
    } 
    [2]=> 
    array(2) { 
    ["lang"]=> 
    string(4) "klingon" 
    ["url"]=> 
    string(36) "http://www.maitre-eolas.fr/feed/atom" 
    } 
} 

所以未知大小的一個陣列,每個元素是知道尺寸的陣列,(2鍵/值對(朗=東西& URL =某物)的整點不知道什麼郎是真的可以任何(字母數字)值

而我想要做的是構建一個新的,乾淨的數組,其中鍵是按他們的名字排序,如這個:

array(2) { 
    [0]=> 
    array(2) { 
    ["lang"]=> 
    string(2) "en" 
    ["urls"]=> 
array(2) { 
    string(42) "http://feeds.feedburner.com/wordpress/haJM" 
    string(37) "http://feeds.feedburner.com/hackaday/LgoM" 
} 
    } 
    [1]=> 
    array(2) { 
    ["lang"]=> 
    string(6) "klingon" 
    ["urls"]=> 
array(1) { 
    string(36) "http://www.maitre-eolas.fr/feed/atom" 
} 
    } 
} 

但是,當我嘗試將第一個$ myArray [0] ['lang']放入一個變量並與以下內容進行比較時,它...起作用。一旦。並停下來。

我做錯了,我知道吧。

+1

請問您可以發佈您的代碼。我們無法告訴您您做錯了什麼,以及如何解決問題。 – 2011-12-25 15:26:55

回答

3

試試這個:

$aResult = array(); 
foreach($aInput as $aRow){ 
    $aResult[$aRow['lang']][] = $aRow['url']; 

} 

這將使你:

array: 
    'Klingon' 
     'URL1' 
     'URL2' 
    'en' 
     'URL1' 
     'URL2' 

你真的需要的格式上面列出?或者這樣做也可以嗎?

+0

哇。正如我們在這裏所說的那樣工作鎳。非常感謝。 – yPhil 2011-12-25 15:36:41

+0

太棒了!樂意效勞。 – 2011-12-25 15:42:35