2014-09-24 3 views
-3

Это мой базовый PHP-код. Только для цикла, и я хочу сортировать его с этим для цикла только.Как отсортировать значения 2D-массива в порядке возрастания в PHP?

<?php 
//this is my 2-d array 
$arr=array(array(5,9), 
     array(7,1), 
     array(3,2), 
     array(6,4), 
     array(2,8)); 

/*my basic for loop concept*/ 
    for($k=0;$k<count($arr);$k++)//for loop for key 
    { 
     for($v=0;$v<count($arr[$k]);$v++)//for loop for value 
     { 
      for($i=0;$i<5;$i++)//for loop to iterate 
      { 
       for($j=0;$j<3;$j++)//for loop to iterate 
       { 
        print_r($arr[$k][$v].'<br>'); 
        if($arr[$k][$v] > $arr[$i][$j]) 
        { 
        $temp = $arr[$k][$v]; 
        $arr[$k][$v]=$arr[$i][$j]; 
        $arr[$i][$j] = $temp; 
        print_r($arr[$i][$j].'<br>'); 
        } 
       } 
      } 

     } 
    } 
?> 
+1

Пожалуйста, пример показать входные данные и желаемый результат. – sectus

+0

Вы хотите вывести то же самое здесь: 9,8,7,6,5,4,3,2,1? –

+0

мой желаемый результат: $ arr = массив (массив (1,2), массив (2,3), массив (4,5), массив (6,7), массив (8,9)) ; – THEKUNAL

ответ

0

Вы можете использовать array_multisort функцию() РНР

Для вашего кода решения будут не использовать цикл.

<?php 
    $arr=array(array(5,9), 
     array(7,1), 
     array(3,2), 
     array(6,4), 
     array(2,8)); 

    array_multisort($arr, SORT_ASC);  // For ascending 
    array_multisort($arr, SORT_DESC);  // For Descending 
    print_r($arr); 
    ?> 

Если вы хотите отсортировать суб-массив также то вы можете использовать цикл и можно назвать array_multisort() функцию, как

array_multisort($arr[$index], SORT_ASC); 

Я надеюсь, что это поможет.

+0

Это не работает –

+0

@ ĐứcĐoànQuang: Это будет сортировать массив на основе первого элемента вспомогательного массива – Naincy

+0

спасибо за вашу помощь, но я хочу сделать это, используя только цикл – THEKUNAL

0

Я надеюсь, что это будет помощь для вас:

<?php 
//this is my 2-d array 
$arr=array(array(5,9), 
     array(7,1), 
     array(3,2), 
     array(6,4), 
     array(2,8)); 

for($i=0;$i<count($arr);$i++){ 
    array_multisort($arr[$i], SORT_ASC); 
} 
print_r($arr); 
?> 
+0

жаль, что он не работает ..... bro – THEKUNAL

+0

Можете ли вы показать мне ваш пример вывода после сортировки? –

+0

этот цикл просто повторяется 4 раза и печатает тот же массив ... – THEKUNAL

Смежные вопросы