$arr1 = [1,2,3];
$arr2 = [1,2,3,4];
$arr3 = [1,2,3,4,5];
echo max(count($arr1), count($arr2), count($arr3)); // returns 5
とmax
私はカウントを取得しますが、どのアレイが大きいか分かりません。より大きいアレイのリファレンス(この場合は$arr3
)を取得するにはどうすればよいですか?大きな配列を取得する
$arr1 = [1,2,3];
$arr2 = [1,2,3,4];
$arr3 = [1,2,3,4,5];
echo max(count($arr1), count($arr2), count($arr3)); // returns 5
とmax
私はカウントを取得しますが、どのアレイが大きいか分かりません。より大きいアレイのリファレンス(この場合は$arr3
)を取得するにはどうすればよいですか?大きな配列を取得する
あなたは、その後、多次元配列をループを、あなたのすべての配列を格納し、ここにあなたの最大の配列、
$lgArraySize = 0; // used for comparing the size of array
$lgArray = array(); // used to store reference of largest array
foreach($arraylist as $array) {
if(count($array) > $largeArraySize) {
$lgArray = &$array;
$lgArraySize = count($array);
}
}
print_r($largeArray);
は1つのライナーコードです見つけるために多次元配列を使用する必要があります。(あなたがしたいこと)
function findMax($row){
return count($row);
}
$maxArrayPos = array_search(max(array_map("findMax", $multi)), array_map("findMax", $multi));
print_r($multi[$maxArrayPos]);
これを1つのライナーとして作成することができます。
このような配列のインデックスを使用する方が、トラバーサルが容易です。次のように あなたは、より大きな配列への参照を取得することができます -
$arr;
$arr[0] = [6,2,1,12,32,11];
$arr[1] = [1,2,3,4];
$arr[2] = [1,2,3,4,4,4,1,1,1,1];
$count = -1;//will hold max count
$big;//larger array will be stored here
foreach ($arr as $key => $value) {
$curCount = count($arr[$key]);//curCount holds current array size
//checking for biggest array count
if($curCount>$count){
$count = $curCount;
$big = &$arr[$key];
}
}
var_dump($big);
たぶんロジックはいえ、あまりにもかさばるです!
これを試してみてください:
function laregr(){
$numargs = func_num_args();
$large_array = array();
if($numargs){
$arg_list = func_get_args();
$max = 0;
foreach($arg_list as $arg){
if(is_array($arg)){
$big = count($arg);
if($big >= $max){
$max = $big;
$large_array = $arg;
}
}
}
}
return $large_array;
}
$arr1 = [1,2,3,4,5,6];
$arr2 = [1,2,3,4,5];
$arr4 = [1,2,3,4, 5,6,7];
$max_array = laregr($arr1, $arr2, $arr4); // large($arr1, ...)
print_r($max_array);
が、これは何が必要ですか?
$arr1 = [1,2,3];
$arr2 = [1,2,3,4];
$arr3 = [1,2,3,4,5];
$countmax = [
"arr1" => $arr1,
"arr2" => $arr2,
"arr3" => $arr3,
];
$value = max($countmax);
print_r($value);
Oputput:
Array ([0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5)
だから '$ max = max(array_map($ row){return count($ row);}、[$ arr1、$ arr2]));'?しかし、配列ではなく 'count'を出力します。 – 3zzy
@ 3zzyはソリューションをチェックします。これで、あなたが持っている最初の最大の配列が印刷されます。まず、同じ長さの配列が複数ある場合は、最初の配列を出力するからです。 –