phpの無名関数

出力結果がぱっと出てこなかったので、実際に書いてみました。

//無名関数1
$array=array("really long string hear, boy","this","middling length","larger");
usort($array,function($a,$b)
{
  return strlen($a) - strlen($b);
});
print_r($array);

出力結果(usortで並び替え)
Array ( [0] => this [1] => larger [2] => middling length [3] => really long    string hear, boy ) 

//無名関数2
$array=array(“really long string hear, boy”,”this”,”middling length”,”larger”);
$sortOption=’random’;
usort($array,function($a,$b) use ($sortOption){
if($sortOption==’random’){
//ランダムにソートするため-1 0 1のいずれかの値を無作為に返します
return rand(0, 2) -1;
}else{
return strlen($a) – strlen($b);
}

    });
    print_r($array);
出力結果(ランダムなので結果は変わる)
Array ( [0] => really long string hear, boy [1] => this [2] => middling length [3] => larger )
Array ( [0] => really long string hear, boy [1] => this [2] => larger [3] => middling length )

//無名関数3
$array=array(“really long string hear, boy”,”this”,”middling length”,”larger”);
$sortOption=’random’;

function sortNonrandom($array)
{
  $sortOption=false;
 usort($array,function($a,$b) use ($sortOption){
  if($sortOption=='random')
  {
  //ランダムにソートするため-1 0 1のいずれかの値を無作為に返します
      return rand(0, 2) -1;
  }else{
      return strlen($a) - strlen($b);
  }

     });
  print_r($array);
  }
  print_r(sortNonrandom($array));
出力結果(通常の並び替え)
Array ( [0] => this [1] => larger [2] => middling length [3] => really long string hear, boy )

無名関数1と3は出力結果は同じものになりました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です