2015-12-01 3 views
0

Привет, я создал массив с 4 строками и 5 столбцами. Теперь я хочу отсортировать массив по случайному числу в моем массиве, но не как сортировать многомерные массивы. Я видел онлайн, что, возможно, я использую для каждого цикла, но не знаю, где его разместить, если бы я использовал его. Кроме того, я не уверен, как мне рассказать сортировку, какой столбец я хочу сортировать, поскольку у меня нет идентификатора для выходов. Любая помощь была бы оценена по достоинству.Как отсортировать многомерный массив по randNum

<?php 
$vyear = 1; 
$vmonth= 3; 
$date = "2015-11-25"; 
$t = 0; 

echo date("M-y") . "<br>"; 

$startdate = "2009/06/01"; 

$start = strtotime($date); 

$currentdate = $start; 

$newdate = strtotime ( $t .'month' , strtotime ($date)) ; 
$ndate = date ('m-Y-d' , $newdate); 

echo $ndate; 



echo "<br>"; 
echo "<br>"; 
echo $date; 

$times_table = array(); 
     for($i = 0; $i <= 3; $i++){ 
      $times_table[$i] = array(); 

     } 
echo "<pre>"; 

     for($i = 0; $i <= 3; $i++){ 
      for($j = 0; $j <= 4; $j++){ 

       if ($j == 0){ 
       $times_table[$i][$j]= "Version 4" ; 
      } 
       else if ($j == 1){ 
       $cur_date = date("M-y", $currentdate); 

       $currentdate = strtotime('+1 month', $currentdate); 

       $times_table[$i][$j]= $cur_date ; 

      echo $cur_date . ">". "<br />"; 
       } 
       else{ 
        $times_table[$i][$j]= "gary" ; 
       } 
       if ($j == 3) { 
        $numbers = mt_rand(1, 100); 
        $times_table[$i][$j]= $numbers ; 

       } 
       if ($j == 4){ 

        if($i == 0 || $i == 3) 
        { 
         $pay = "P"; 

        $times_table[$i][$j]= $pay ; 
        } 
        else{ 
         $int = "I"; 

        $times_table[$i][$j]= $int ; 

        } 
       } 

      } 

      } 




// echo $times_table[1][3] ; 
print_r($times_table); 
echo "</pre>"; 
    ?> 

ответ

0

Я добавил usort функцию РНР

function sortByRandomNo($a, $b) { 
    return $a[3] - $b[3]; 
} 

usort($times_table, 'sortByRandomNo'); 

usort - сортирует массив по значениям используя пользовательскую функцию сравнения

Здесь, ваше случайное число в индекс 3 и мы сравниваем числа в этом индексе

Так что ваш код:

<?php 
$vyear = 1; 
$vmonth= 3; 
$date = "2015-11-25"; 
$t = 0; 

echo date("M-y") . "<br>"; 

$startdate = "2009/06/01"; 

$start = strtotime($date); 

$currentdate = $start; 

$newdate = strtotime ( $t .'month' , strtotime ($date)) ; 
$ndate = date ('m-Y-d' , $newdate); 

echo $ndate; 



echo "<br>"; 
echo "<br>"; 
echo $date; 

$times_table = array(); 
     for($i = 0; $i <= 3; $i++){ 
      $times_table[$i] = array(); 

     } 
echo "<pre>"; 

     for($i = 0; $i <= 3; $i++){ 
      for($j = 0; $j <= 4; $j++){ 

       if ($j == 0){ 
       $times_table[$i][$j]= "Version 4" ; 
      } 
       else if ($j == 1){ 
       $cur_date = date("M-y", $currentdate); 

       $currentdate = strtotime('+1 month', $currentdate); 

       $times_table[$i][$j]= $cur_date ; 

      echo $cur_date . ">". "<br />"; 
       } 
       else{ 
        $times_table[$i][$j]= "gary" ; 
       } 
       if ($j == 3) { 
        $numbers = mt_rand(1, 100); 
        $times_table[$i][$j]= $numbers ; 

       } 
       if ($j == 4){ 

        if($i == 0 || $i == 3) 
        { 
         $pay = "P"; 

        $times_table[$i][$j]= $pay ; 
        } 
        else{ 
         $int = "I"; 

        $times_table[$i][$j]= $int ; 

        } 
       } 

      } 

      } 


// echo $times_table[1][3] ; 
print_r($times_table); 
echo "</pre>"; 

function sortByRandomNo($a, $b) { 
    return $a[3] - $b[3]; 
} 

usort($times_table, 'sortByRandomNo'); 

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

и ваш выход:

Dec-15 
11-2015-25 

2015-11-25 
Nov-15> 
Dec-15> 
Jan-16> 
Feb-16> 
Array 
(
    [0] => Array 
     (
      [0] => Version 4 
      [1] => Nov-15 
      [2] => gary 
      [3] => 2 
      [4] => P 
     ) 

    [1] => Array 
     (
      [0] => Version 4 
      [1] => Dec-15 
      [2] => gary 
      [3] => 9 
      [4] => I 
     ) 

    [2] => Array 
     (
      [0] => Version 4 
      [1] => Jan-16 
      [2] => gary 
      [3] => 43 
      [4] => I 
     ) 

    [3] => Array 
     (
      [0] => Version 4 
      [1] => Feb-16 
      [2] => gary 
      [3] => 45 
      [4] => P 
     ) 

) 
Array 
(
    [0] => Array 
     (
      [0] => Version 4 
      [1] => Nov-15 
      [2] => gary 
      [3] => 2 
      [4] => P 
     ) 

    [1] => Array 
     (
      [0] => Version 4 
      [1] => Dec-15 
      [2] => gary 
      [3] => 9 
      [4] => I 
     ) 

    [2] => Array 
     (
      [0] => Version 4 
      [1] => Jan-16 
      [2] => gary 
      [3] => 43 
      [4] => I 
     ) 

    [3] => Array 
     (
      [0] => Version 4 
      [1] => Feb-16 
      [2] => gary 
      [3] => 45 
      [4] => P 
     ) 

) 
+0

Спасибо за Ваш ответ. И, к сожалению, я могу спросить, как работает функция usort. Новое к этому и не похоже на это. – user3660857

+0

См. Обновленный ответ! usort - Сортирует массив по значениям с использованием пользовательской функции сравнения - http://php.net/manual/en/function.usort.php – Thamilan

+0

Вы бы описали arsort так же? – user3660857

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