2015-11-23 67 views
0

欲分選的多維陣列的用戶定義的函數數組:排序通過用戶定義的函數

<?php 
$arr1 = array(
    49, 
    8, 
    array(
     'Muazam', 
     'Ali', 
     'Rana', 
     'Amina', 
     'Surya', 
     'Danish', 
     'Raina', 
     4, 
     3, 
     2, 
     1, 
    ) , 
    7, 
    6, 
    5, 
    4, 
    3, 
    2, 
    1, 
    0, 
); 

function abc($arr) 
    { 
    $len = count($arr) - 2; 
    foreach($arr as $key => $value) 
     { 
     for ($a = 0; $a <= $len; $a++) 
      { 
      if ($arr[$a] > $arr[$a + 1]) 
       { 
       $temp4 = $arr[$a]; 
       $arr[$a] = $arr[$a + 1]; 
       $arr[$a + 1] = $temp4; 
       } 
      } 

     if (is_array($value)) 
      { 
      abc($value, $a = $a + 1); 
      } 
     } 
    } //2nd foreach close 
echo "<pre>"; 
print_r($arr); 
echo "</pre>"; 
} 
+0

您應該使用'usort' – Philipp

+1

您想使用哪個標準對數組進行排序?目前的產出是多少?你期望得到什麼? – Rizier123

+0

''''''''''''''''''''''''''''如果你想編輯它,'''''功能abc(&$ arr)但我不知道你在這裏試圖做什麼 - 對函數的遞歸調用試圖傳遞第二個參數給函數,但它只接受一個參數 – Steve

回答

0

這是一個遞歸函數的基本用法:

$arr1 = array(49, 8, array(
    'Muazam', 'Ali', 'Rana', 'Amina', 'Surya', 'Danish', 'Raina', 4, 3, 2, 1, 
), 7, 6, 5, 4, 3, 2, 1, 0); 

function recursiveSort(&$array) 
{ 
    foreach ($array as &$value) { 
     if (is_array($value)) { 
      recursiveSort($value); 
     } 
    } 

    return sort($array); 
} 

recursiveSort($arr1); 

echo '<pre>'; 
print_r($arr1); 
echo '</pre>'; 

結果將是:

Array 
(
    [0] => 0 
    [1] => 1 
    [2] => 2 
    [3] => 3 
    [4] => 4 
    [5] => 5 
    [6] => 6 
    [7] => 7 
    [8] => 8 
    [9] => 49 
    [10] => Array 
     (
      [0] => Ali 
      [1] => Amina 
      [2] => Danish 
      [3] => Muazam 
      [4] => Raina 
      [5] => Rana 
      [6] => Surya 
      [7] => 1 
      [8] => 2 
      [9] => 3 
      [10] => 4 
     ) 

) 
0

這是答案..排序多維數組而不使用內置函數。

$arr1 = array(1,3,5,'2',array(99,55,array(111,444,array('a','r','p','e','t'),777),66,99),8,9,0,3,1); 
function abc(&$arr) 
{ 
$len=count($arr)-2; 
foreach($arr as $key => &$value) 
    { 
for ($a=0;$a<=$len;$a++){ 

if($arr[$a]>$arr[$a+1]) 
{ 

    $temp4=$arr[$a]; 
    $arr[$a]=$arr[$a+1]; 
    $arr[$a+1]=$temp4; 
} 

} 

if(is_array($value)) 
       { 

       abc($value,$a=$a+1); 
       } 

    }//foreach close 

//}//2nd foreach close 

    echo "<pre>"; 
    return $arr; 
    echo "</pre>"; 

}//function close 




print_r (abc($arr1));