私はあなたが望むものをよく理解していないことを願っています:
あなたの配列:
$array1 = array(2, 23, 7);
$array2 = array(2, 21, 7);
$Mutt = array($L, $P, $O, $array1);
$Jeff = array($L, $P, $O, $array2);
and (参照渡し)$people
を含む新しい配列を作成します。$Mutt
$Jeff
$people=array(&$Mutt,&$Jeff);
必要な位置で最大値を持つ配列findMaxIndex
のインデックスを返す関数を作成します。$people[that index]
その引数は次のとおりです。
$arr
、比較したい配列を含む配列 (この場合は$people
)
$pos1
と$pos2
、比較したいインデックスです
では・・・比較してみます
$arr[0][$pos1][$pos2]
$arr[1][$pos1][$pos2]
- ...
$arr[count($arr)-1][$pos1][$pos2]
この関数は次のように機能します。
- 配列 を作成します
$max
。ここ$max[0]
で、 は $arr のインデックスであり、(その時点までに調べた配列の中で) 最大値を持ち、$max[1]
はその値です。
- すべてを繰り返します
$arr
- 現在の値 (
$arr[$i][$pos1][$pos2]
) が最大値より大きいことが判明した場合、$max
が更新され、 になり
array($i,$arr[$i][$pos1][$pos2])
ます。
- 最後に、必要な位置で最大値を持つ配列
$max[0]
のインデックスである を
返します。$people[that index]
機能は次のとおりです。
function findMaxIndex($arr,$pos1,$pos2){
$max=array(0,$arr[0][$pos1][$pos2]);
for($i=1;$i<count($arr);$i++){
if($arr[$i][$pos1][$pos2]>$max[1]){
$max=array($i,$arr[$i][$pos1][$pos2]);
}
}
return $max[0];
}
次に、関数を呼び出します...
$maxIndex=findMaxIndex($people,3,1);
...これは を与える0
ので、最大値を持つ配列は$people[0]
( $Mutt
)
最後に、その配列を増やします。
$people[$maxIndex][1]++;
$Mutt
$Jeff
参照によって渡したため、これらも変更されます。
要するに、
$array1 = array(2, 23, 7);
$array2 = array(2, 21, 7);
$Mutt = array($L, $P, $O, $array1);
$Jeff = array($L, $P, $O, $array2);
$people=array(&$Mutt,&$Jeff);
function findMaxIndex($arr,$pos1,$pos2){
$max=array(0,$arr[0][$pos1][$pos2]);
for($i=1;$i<count($arr);$i++){
if($arr[$i][$pos1][$pos2]>$max[1]){
$max=array($i,$arr[$i][$pos1][$pos2]);
}
}
return $max[0];
}
$maxIndex=findMaxIndex($people,3,1);//gives `0` -> Max is `$people[0]`
$people[$maxIndex][1]++;
==============================================
また、同点の場合に複数のインデックスが必要な場合 (太字で変更):
あなたの配列:
$array1 = array(2, 23, 7);
$array2 = array(2, 21, 7);
$Mutt = array($L, $P, $O, $array1);
$Jeff = array($L, $P, $O, $array2);
と$people
を含む新しい配列の作成$Mutt
$Jeff
$people=array(&$Mutt,&$Jeff);
必要な位置で最大値を持つ配列でfindMaxIndex
あるインデックスを含む配列を返すfunction を作成します。$people[that index]
その引数は次のとおりです。
$arr
、比較したい配列を含む配列 (この場合は$people
)
$pos1
と$pos2
、比較したいインデックスです
では・・・比較してみます
$arr[0][$pos1][$pos2]
$arr[1][$pos1][$pos2]
- ...
$arr[count($arr)-1][$pos1][$pos2]
この関数は次のように機能します。
- 配列を作成します
$max
。ここで、 は $arrのインデックスを含む配列であり$max[0]
、最大値 (その瞬間まで調べた配列の中で) であり、その値です。$max[1]
- すべてを繰り返します
$arr
- 現在の値 (
$arr[$i][$pos1][$pos2]
) が最大値より大きいことが判明した場合、$max
が更新され、 になり
array(array($i),$arr[$i][$pos1][$pos2])
ます。
- そうでない場合、および現在の値(
$arr[$i][$pos1][$pos2]
)が最大値と等しいことが判明した場合$max[0]
は、更新され、$i
そこにプッシュされます。
- 最後に、必要な位置で最大値を持つ配列で
$max[0]
あるインデックスを含む配列である を
返します。$people[that index]
機能は次のとおりです。
function findMaxIndex($arr,$pos1,$pos2){
$max=array(array(0),$arr[0][$pos1][$pos2]);
for($i=1;$i<count($arr);$i++){
$current=$arr[$i][$pos1][$pos2];
if($current>$max[1]){
$max=array(array($i),$current);
}else if($current==$max[1]){
array_push($max[0],$i);
}
}
return $max[0];
}
次に、関数を呼び出します...
$maxIndex=findMaxIndex($people,3,0);
...これは を与えるarray(0,1)
ので、最大値を持つ配列は$people[0]
( $Mutt
) と$people[1]
( $Jeff
) です。
最後に、配列を増やします。
for($i=0;$i<count($maxIndex);$i++){
$people[$maxIndex[$i]][1]++;
}
$Mutt
$Jeff
参照によって渡したため、これらも変更されます。
要するに、
$array1 = array(2, 23, 7);
$array2 = array(2, 21, 7);
$Mutt = array($L, $P, $O, $array1);
$Jeff = array($L, $P, $O, $array2);
$people=array(&$Mutt,&$Jeff);
function findMaxIndex($arr,$pos1,$pos2){
$max=array(array(0),$arr[0][$pos1][$pos2]);
for($i=1;$i<count($arr);$i++){
$current=$arr[$i][$pos1][$pos2];
if($current>$max[1]){
$max=array(array($i),$current);
}else if($current==$max[1]){
array_push($max[0],$i);
}
}
return $max[0];
}
$maxIndex=findMaxIndex($people,3,0);//gives `array(0,1)` -> Tie between `$people[0]` and `$people[1]`
for($i=0;$i<count($maxIndex);$i++){
$people[$maxIndex[$i]][1]++;
}