から最大カウント値を取得しますPHP、私が最も定期的であるオブジェクトを見つける必要があり、配列の配列
$items = array("370","370","546","55");
$value = max($items);
$key = array_search($value, $items);
このプリントアウト2と
546しかし、どのようにすることができます私は出力とその関連値、私の例では?
から最大カウント値を取得しますPHP、私が最も定期的であるオブジェクトを見つける必要があり、配列の配列
$items = array("370","370","546","55");
$value = max($items);
$key = array_search($value, $items);
このプリントアウト2と
546しかし、どのようにすることができます私は出力とその関連値、私の例では?
を私は@alistaircolアイデアを取って、私も(それが配列の順序に依存だとして)それを修正するだけでなく割り当て部分を簡略化して2つの新しい配列を作成しません
ここで試すことができます
http://sandbox.onlinephpfunctions.com/code/2fe11fb6040dc68db43fb5cbb858ef3e47394dd2
そしてここでコード
$items = [370,370,546,55,55,55];
$counted = array_count_values($items);
arsort($counted); //sort descending maintain keys
$occurences = reset($counted); //get the first value (rewinds internal pointer)
$most_frequent = key($counted); //get the key, as we are rewound it's the first key
echo $most_frequent . ' appears ' . $occurences . ' time(s)' . PHP_EOL;
これはちょうどFYIオリジナルの答えは、このテストケース
http://sandbox.onlinephpfunctions.com/code/fe13e7a0bd00ea1219bc69e2bc5a5aebaf478034
Whのを失敗していました@alistaircol
55 appears 3 time(s)
を出力し、正しくあります
$items = [370,370,546,55];
へ:ICHから入力配列を変更している
$items = [370,370,546,55,55,55];
それだろう、まだ出力:正しい答えは55 appears 3 time(s)
これである。この場合
370 appears 2 time(s)
最も多くのアイテムが最後のもので、それはその注文に基づいていることを公開しています(最初のインデックス[0]
を使用しているため私には明らかでした)
彼に電話しないでください。答えとして受け入れられたので、私はそれを指摘しなければならないと感じました。全体として、私はその質問に対する健全なアプローチでした。だから、それについての名誉です。もっとして1時間を表示すべての値を取得する
UPDATE
一つの方法は、このようなものです:
Array
(
[1] => 370
[4] => 55
[5] => 55
)
はあなたがここにhttp://sandbox.onlinephpfunctions.com/code/53df6a8ea7a68768572cfef494e3b715aa13e83b
それをテストすることができます出力$items = [370,370,546,55,55,55];
$unique = array_unique($items);
$diff = array_diff_assoc($items, $unique);
print_r($diff);
メモは、あなたは実際に存在するものが1つ少ないことを正確に知ることができます。
UPDATE1
我々は簡単に見つからない1のためにこれらのアカウントを組み合わせることができます。
$items = [370,370,546,55,55,55];
$unique = array_unique($items);
$diff = array_diff_assoc($items, $unique);
print_r($diff);
echo "\n\n";
$counted = array_count_values($diff);
arsort($counted); //sort descending maintain keys
$occurences = reset($counted); //get the first value (rewinds internal pointer)
$most_frequent = key($counted); //get the key, as we are rewound it's the first key
echo $most_frequent . ' appears ' . ($occurences + 1) . ' time(s)' . PHP_EOL;
出力(両方とも以前のもの)
Array
(
[1] => 370
[4] => 55
[5] => 55
)
55 appears 3 time(s)
ああ、あなたはより多くのあるものにしたい場合:
http://sandbox.onlinephpfunctions.com/code/1bc1a30a5e091af3a18fec2c8b48050869108549
とコードことをテストするには、このフィドルを参照してください。 1つは重複のないリストとして、次にユニークな配列でもう一度ヒットします$unique = array_unique($diff);
乾杯!
最終的な説明をありがとう...しかし、あなたの例では、私はどのようにして2番目の値を得ることができますか? 370 2 – NineCattoRules
あなたは何度も現れるすべて、これ、またはこれを望みますか?あなたが従うならば。 – ArtisticPhoenix
他の答えであなたのフィドルをコメントとして見ました。それは私にとって完璧なので、 'echo $ number_appears_most [1] 'のように使うこともできます。 '出現する'。 $ number_of_occurences [1]。 '時間(s)'。 PHP_EOL; ' – NineCattoRules
あなたのケースで動作するはずのPHP関数array_count_values
があります。
次に、すべての値の数が配列されていて、それらを並べ替えて処理できます。
https://secure.php.net/manual/en/function.array-count-values.php
$items = array("370","370","546","55");
print_r(array_count_values($items));
ありがとう、私はすでに知っていますが、どうすれば370と2を出力することができますか? – NineCattoRules
あなたは、この方法のように同じ値の数を見つけることができます。
print_r(array_count_values($items));
意志出力
Array
(
[370] => 2
[546] => 1
[55] => 1
etc...
)
2と307値を取得するには、物事の下に行う必要があります。
$new_arr = array_count_values($items);
$max = max($new_arr);
$new_arr = array_keys($new_arr, max($new_arr)));
echo $new_arr[0]."is repeated (".$max.") times.";
意志出力私はそれが表示された回数(例えば2を取得するために(例えば370)最も出現番号を取得するためにarray_count_values
と結果の配列の使用からarray_keys
を使用してarray_values
307 is repeated (2) times.
私はそれを使用することはできません、私は数字を知らない370 – NineCattoRules
)。
<?php
$items = [370,370,546,55];
$counted = array_count_values($items);
/*
Array
(
[370] => 2
[546] => 1
[55] => 1
)
*/
$number_appears_most = array_keys($counted);
/*
Array
(
[0] => 370
[1] => 546
[2] => 55
)
*/
$number_of_occurences = array_values($counted);
/*
Array
(
[0] => 2
[1] => 1
[2] => 1
)
*/
echo $number_appears_most[0] . ' appears ' . $number_of_occurences[0] . ' time(s)' . PHP_EOL;
これはあなたを与える:
370 appears 2 time(s)
おかげで、ありがとう! – NineCattoRules
あなたのコードは、注文に基づいています。このフィドルを参照してください。http://sandbox.onlinephpfunctions.com/code/fe13e7a0bd00ea1219bc69e2bc5a5aebaf478034 – ArtisticPhoenix
正解は「55は3回表示されます」ですが、変更はありません。これを解決するには、発生数をソートする必要があります。私は 'arsort($ counted);を実行することをお勧めします。 – ArtisticPhoenix
$items = [370,370,546,55,55];
$counted = array_count_values($items); // count occurrences
$counted=array_intersect ($counted,[max($counted)]); // only keep elements with highest occurrence
var_export ($counted); // print to screen
配列には_key_ 370がありません。配列のキーは0,1,2,3です。 – CBroe
出力はどのようにする必要がありますか? 2または370? – rahulsm
@rahulsmはいまったく – NineCattoRules