Вам нужно создать функцию сортировки пользователя (это самое красивое и быстрое решение для программы:
$usapopstats = array(
array('New York',8008278),
array('Los Angeles',3694820),
array('Chicago',2896016),
array('Houston',1953631),
array('Philadelphia',1517550),
array('Phonenix',1321045),
array('San Diego',1223400),
array('Dallas',1188580),
array('San Antonio',1144646),
array('Detroit',951270)
);
function sort_helper ($a, $b) {
if ($a[1] > $b[1]) return 1;
if ($a[1] == $b[1]) return 0;
return -1;
}
usort ($usapopstats, sort_helper);
var_dump($usapopstats);
Это не самый быстрый код, отлично подходит для списка, скажем, до 1000 записей, но я бы не стал делать это с массивом с 100 000 записей. Для каждого сравнения вызывается функция sort_helper, и поскольку необходимо n log n сравнений, это означает столько же вызовов функции.
Если вам нужно это для длинного списка, закодируйте совокупность в ключе и ksort:
$usapopstats = array(
array('New York',8008278),
array('Los Angeles',3694820),
array('Chicago',2896016),
array('Houston',1953631),
array('Philadelphia',1517550),
array('Phonenix',1321045),
array('San Diego',1223400),
array('Dallas',1188580),
array('San Antonio',1144646),
array('Detroit',951270)
);
$statshelper = array();
foreach($usapopstats as $index=>$stat){
$statshelper[$stat[1]."_".$index] = $stat; //also add the index to the key to avoid duplicates
}
ksort($statshelper, SORT_NUMERIC); //because the keys are strings (they contain an underscore) by default it will compare lexographically. The flag enforces numerical comparison on the part that can be converted to a number (i.e. the population)
$usapopstats = array_values($statshelper);
var_dump($usapopstats);