PHP foreach сортировка по ключу / значениям - PullRequest
0 голосов
/ 25 декабря 2011

Я просто не могу обернуться вокруг этого.Чего мне не хватает, так это логического бита.

У меня есть $ 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 = что-то & url = что-то), весь смысл не знает, что такое 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 Ответ

3 голосов
/ 25 декабря 2011

Попробуйте:

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

}

Это даст вам:

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

Вам действительно нужен формат, указанный выше?Или это тоже подойдет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...