PHP foreach按键/值排序

时间:2011-12-25 15:21:07

标签: php arrays 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个键/值对(lang = something& url = something)整点都不知道lang是什么。它真的可以任何(字母数字)值。

我想要做的是构建一个新的,干净的数组,其中键按名称排序,如下所示:

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 个答案:

答案 0 :(得分:3)

试试这个:

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

}

那会给你:

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

您真的需要上面列出的格式吗?或者这也会这样做吗?