鍍金池/ 問答/人工智能  PHP/ 請(qǐng)教一個(gè)php數(shù)組排序算法?

請(qǐng)教一個(gè)php數(shù)組排序算法?

有個(gè)數(shù)組。

$a=[
     ['id'=>1,name='w1'],
     ['id'=>4,name='w3'],
     ['id'=>3,name='w2'],
     ['id'=>5,name='w5'],
     ['id'=>6,name='w22'],
     ['id'=>8,name='w222'],
     ['id'=>30,name='w30']
   ];

怎么變成這種的。

$a=[
     ['id'=>1, name='w1',  'sn'=>11],
     ['id'=>4, name='w3',  'sn'=>21],
     ['id'=>3, name='w2',  'sn'=>22],
     ['id'=>5, name='w5',  'sn'=>31],
     ['id'=>6, name='w22', 'sn'=>32],
     ['id'=>8, name='w222','sn'=>33],
     ['id'=>30,name='w30', 'sn'=>34]
   ];

sn的變化是2的0次方開始,1,2,4,8這種變化。如果下面還有數(shù)據(jù),下次可能就是。41,42,43,44,45,46,47,48。

我搞不出來啊,看著挺簡(jiǎn)單的,無從下手。怎么寫都不是,請(qǐng)教下高手幫我一下。謝謝!

sn就是順序來的,順序不便。不按id,name。就按現(xiàn)在的順序。

回答
編輯回答
小眼睛
$a=[
 ['id'=>1,'name'=>'w1'],
 ['id'=>4,'name'=>'w3'],
 ['id'=>3,'name'=>'w2'],
 ['id'=>5,'name'=>'w5'],
 ['id'=>6,'name'=>'w22'],
 ['id'=>8,'name'=>'w222'],
 ['id'=>30,'name'=>'w30'],
 ['id'=>30,'name'=>'w30'],
 ['id'=>30,'name'=>'w30'],
 ['id'=>30,'name'=>'w30'],
 ['id'=>30,'name'=>'w30'],
 ['id'=>30,'name'=>'w30'],
 ['id'=>30,'name'=>'w30'],
   ];
function add_sn(&$arr){
    $len=count($arr);
   $j=0;
   $n=0;
   for ($i=1;$i<=pow(2,$n);$i++) { 
        $arr[$j]['sn']=($n+1).$i;
        if($i==pow(2,$n)){
            $i=0;
            $n++;
        }
        $j++;
        if($j==$len){
            return;
        }
   }    
   }

   
   add_sn($a);
   print_r($a);
2018年3月10日 18:08