友達から PHP について質問されたのですが、やり方が分からないので、皆さんに質問したいと思いここに来ました。 !
JAVAをやっているのですが、友人からPHPの質問を受けたので内容は以下の通りです。
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> $testArr = array( 'php' => array( 'author' => 'allen', 'price' => 40, ), 'java' => array( 'author' => 'james', 'price' => 55, ), 'mysql' => array( 'author' => 'gates', 'price' => 30, ), 'html' => array( 'author' => 'bill', 'price' => 21, ) );
uasort($testArr, create_function('$a,$b', 'return $a["price"]>$b["price"];'));//価格の昇順を降順に変更します。 <br><font color="#e78608">------解決策---------</font><br>
$testArr = 配列( 'php' => 配列( '著者' => 'アレン'、 「価格」 => 40、 )、 'java' => 配列( 「著者」 => 「ジェームズ」、 「価格」 => 55、 )、 'mysql' => 配列( '著者' => 'ゲート'、 「価格」 => 30、 )、 'html' => 配列( '著者' => '請求書'、 「価格」=>21、 ) ); 関数 my_sort($a, $b){ $a['価格'] > $b['価格']; を返します。 } uasort($testArr, "my_sort"); print_r($testArr); ?> <br><font color="#e78608">------解決策------------------</font><br>
foreach ($testArr as $v) { $k[] = $v['価格']; } array_multisort($k, SORT_DESC,$testArr); print_r(array_slice($testArr,0,3)); <br><font color="#e78608">------解決策-----</font><br>上の階の人たちは 2 つのタイプの方法を使用しました<br> は次のように比較されます
$testArr = 配列( 'php' => 配列( '著者' => 'アレン'、 「価格」 => 40、 )、 'java' => 配列( 「著者」 => 「ジェームズ」、 「価格」 => 55、 )、 'mysql' => 配列( '著者' => 'ゲート'、 「価格」 => 30、 )、 'html' => 配列( '著者' => '請求書'、 「価格」=>21、 ) ); /*** コールバック関数を適用します ***/ 関数 func1($ar) { uasort($ar, create_function('$a,$b', 'return $a["price"]>$b["price"];'));//価格の昇順、降順を < に変更します。 } /*** コールバック関数は使用されません ***/ 関数 func2($ar) { foreach ($ar as $key => $row) { $price[$key] = $row['価格']; } array_multisort($price, SORT_ASC,$ar); } /*** php5.3 クロージャーを適用します ***/ 関数 func3($ar) { array_multisort(array_map(function($v){return $v['price'];},$ar),$ar); } check_speed(200, 'func2', $testArr); check_speed(200, 'func3', $testArr); check_speed(200, 'func1', $testArr);