Сортировать странный массив по номеру - PullRequest
2 голосов
/ 01 сентября 2010

Это мой массив:

$hello = Array(
[text] => Array([name] => blabla [num] => 10)
[sometext] => Array([name] => blabla [num] => 2)
[anytext] => Array([name] => blabla [num] => 1)
)

Как отсортировать этот массив по [num]?

Должно выглядеть (на эхо):

<ul>
    <li>anytext</li>
    <li>sometext</li>
    <li>text</li>
</ul>

Спасибо.

Ответы [ 2 ]

5 голосов
/ 01 сентября 2010

Использование uasort():

<?php
$hello = array(
  'text' => array('name' => 'blabla', 'num' => 10),
  'sometext' => array('name' => 'blabla', 'num' => 2),
  'anytext' => array('name' => 'blabla', 'num' => 1)
);

function sort_func($x, $y) { // our custom sorting function
  if($x['num'] == $y['num'])
    return 0; // zero return value means that the two are equal
  else if($x['num'] < $y['num'])
    return -1; // negative return value means that $x is less than $y
  else
    return 1; // positive return value means that $x is more than $y
}

uasort($hello, 'sort_func');

echo '<ul>';
foreach($hello as $key => $value)
{
  echo '<li>'.htmlspecialchars($key).'</li>';
}
echo '</ul>';
2 голосов
/ 01 сентября 2010

uasort - это то, что вы ищете.

function cmp($a, $b) {
    if ($a['num'] == $b['num']) {
        return 0;
    }
    return ($a['num'] < $b['num']) ? -1 : 1;
}

uasort($hello, 'cmp');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...