2009-05-11 2 views
0

У меня есть следующее?Сортировка массива PHP?

$array1 = array(); 

$array2 = array($Id, $Name, $Count); 

array_push($array1, $array2); 

Я хочу отсортировать массив1 по счету $?

sort() и ksort() не выполняют то, что мне нужно?

Любые идеи?

Благодаря

Edit:

Я inputing идентификационный номер, название текста и несколько раз встречается имя, поэтому я хочу, чтобы иметь имя с наибольшим кол в верхней части массива !!

+0

Я считаю вопрос запутанным. Не могли бы вы добавить пример с тем, как будут выглядеть исходные данные, и каков конечный результат? –

ответ

2

Используйте uasort() для сортировки с функцией обратного вызова. Пример:

function sort_callback($a, $b) { 
    if ($a[2] == $b[2]) { 
     return 0; 
    } 

    return ($a[2] < $b[2]) ? -1 : 1; 
} 

uasort($array1, 'sort_callback'); 
1

Я немного смущен тем, как вы представили вопрос, но пытаетесь ли вы сделать что-то подобное?

function order_by($data, $field_name) { 

    $code = "return strnatcmp(\$a['$field_name'], \$b['$field_name']);"; 
    usort($data, create_function('$a,$b', $code)); 
    return $data; 

} 

Так, например:

$array1 = array(); 
$array1[] = array('Id' => 1, 'Name' => 'YT', 'Count' => 30); 
$array1[] = array('Id' => 2, 'Name' => 'Da5id', 'Count' => 56); 
$array1[] = array('Id' => 3, 'Name' => 'Fido', 'Count' => 12); 
$array1[] = array('Id' => 4, 'Name' => 'Hiro', 'Count' => 45); 

echo "<pre>"; 
print_r($array1); 
echo "</pre>"; 

$array2 = order_by($array1, 'Count'); 

echo "<pre>"; 
print_r($array2); 
echo "</pre>"; 
Смежные вопросы