この投稿は、baidu_24894285 によって 2015-01-26 20:32:24 に最終編集されました2 次元配列を定義し、2 つの関数をカスタマイズします。最初の関数は配列の 2 番目の列をアルファベットの昇順に並べ替え、2 番目の関数は配列の 3 番目の列
を数値の昇順に並べ替えます。
私が理解できないのは、これら 2 つのカスタム関数が非常に奇妙であるということです。これらの $x $y が何を表しているのか理解できません。なぜそれらを比較するのでしょうか?誰かが論理構造を詳しく説明してくれることを願っています。
b4649f6c34c2590d722f133f087cf7f6
出力結果:
array (size=3)
0 => 配列 (サイズ = 3)
0 => 文字列 'TIR' (長さ = 3)
1 => 文字列 'タイヤ' (長さ = 5)
2 => 文字列 '100' (長さ = 3)
1 => 配列 (サイズ = 3)
0 => 文字列 'OIL' (長さ = 3)
1 => ; 文字列 'oil' (長さ=3)
2 => 文字列 '10' (長さ=2)
配列 (サイズ=3)
0 => 'SPK' (長さ=3)
1 => 文字列 'スパーク プラグ' (長さ=11)
2 => 文字列 '4' (長さ=1)
配列 (サイズ) =3)
0 =>
配列 (サイズ = 3)
0 => 文字列 'OIL' (長さ=3)
1 => )
2 => 文字列 '10' (長さ=2)
1 => 配列 (サイズ=3)
0 => 文字列 'SPK' (長さ=3)
1 => 文字列 'スパーク プラグ' (長さ=11)
2 => 文字列 '4' (長さ=1)
2 => 配列 (サイズ=3)
0 => 文字列 'TIR' (長さ=3)
1 => 文字列 'タイヤ' (長さ=5)
2 => 文字列 '100' (長さ=3)
配列 (サイズ = 3)
0 => 配列 (サイズ = 3)
0 => 文字列 'SPK' (長さ = 3)
1 =>プラグ' (長さ=11)
2 => 文字列 '4' (長さ=1)
1 => 配列 (サイズ=3)
0 => (長さ=3)
1 => 文字列 'oil' (長さ=3)
2 => 文字列 '10' (長さ=2)
2 => 配列 (サイズ=3)
0 => 文字列 'TIR' (長さ=3)
1 => 文字列 'タイヤ' (長さ=5)
2 => 文字列 '100' (長さ=3) )
------解決策のアイデア----------------------マニュアルの usort メソッドを参照してください2 つのパラメータの説明:
cmp_function 最初のパラメータが 2 番目のパラメータより小さい、等しい、または大きい場合、比較関数は以下の整数を返す必要があります。に応じて、または 0 より大きくなります。
int callback (
mixed $a,
mixed $b)
分かりやすいですが、$a、$b は現在使用されている配列の要素です比較用に。あなたの例では、
array('TIR','tires','100')
array('OIL','oil','10'),
array('SPK','spark) plugs','4')
実際、$a と $b が何であるかを知りたい場合は、それを出力するだけです。
<br />$products = array( array('TIR','tires','100'),<br />array('OIL','oil','10'),<br />array('SPK','spark plugs','4')<br />);<br /><br />function compare1($x,$y){<br /> echo 'x:';<br /> var_dump($x);<br /> echo 'y:';<br /> var_dump($y);<br /><br /> if ($x[1] == $y[1]) {<br /> return 0;<br /> }elseif ($x[1]<$y[1]) {<br /> return -1;<br /> }<br /> else{<br /> return 1;<br /> }<br />}<br /><br />usort($products,'compare1');<br />
<br />x:<br />array (size=3)<br /> 0 => string 'OIL' (length=3)<br /> 1 => string 'oil' (length=3)<br /> 2 => string '10' (length=2)<br />y:<br />array (size=3)<br /> 0 => string 'TIR' (length=3)<br /> 1 => string 'tires' (length=5)<br /> 2 => string '100' (length=3)<br />x:<br />array (size=3)<br /> 0 => string 'SPK' (length=3)<br /> 1 => string 'spark plugs' (length=11)<br /> 2 => string '4' (length=1)<br />y:<br />array (size=3)<br /> 0 => string 'OIL' (length=3)<br /> 1 => string 'oil' (length=3)<br /> 2 => string '10' (length=2)<br />x:<br />array (size=3)<br /> 0 => string 'TIR' (length=3)<br /> 1 => string 'tires' (length=5)<br /> 2 => string '100' (length=3)<br />y:<br />array (size=3)<br /> 0 => string 'OIL' (length=3)<br /> 1 => string 'oil' (length=3)<br /> 2 => string '10' (length=2)<br />x:<br />array (size=3)<br /> 0 => string 'SPK' (length=3)<br /> 1 => string 'spark plugs' (length=11)<br /> 2 => string '4' (length=1)<br />y:<br />array (size=3)<br /> 0 => string 'TIR' (length=3)<br /> 1 => string 'tires' (length=5)<br /> 2 => string '100' (length=3)<br />