1

こんにちは、指定された配列から繰り返し値を取得するのに助けが必要です。以下は、最大値を取得しようとしているコードです$values[4]

$values = array(
    "0"=> "abc",
    "1"=> "aaa",
    "2"=> "aaa|abc",
    "3" =>  "| | | | | | | | | | | | | | | | ",
    "4" => "a|b|b|c|d|e|f|g",
    "5" => "1|2|3||4|5|6"
);


foreach ($values as $key) {
$prevalues = explode('|', $key);
$count[] = count($prevalues);
}
 print_r($counts);
 $counts = array_count_values($count);
 arsort($counts);
 echo $max= key($counts);


Array
 (
    [0] => 1
    [1] => 1
    [2] => 2
    [3] => 17
    [4] => 8
    [5] => 8
)
print_r($max );

現在、私は $max = 1; を取得しています。$max を 8 にする必要があります。

4

4 に答える 4

1

すでに $counts に値を配列していて、あなたが求めていると思うように配列内の最大値を見つけるだけでよい場合は、すでに PHP にこのための組み込み関数があります。

$max = max($counts);

$max は 17 になります。

ドキュメント: http://php.net/manual/en/function.max.php

Iambrainsreed へのコメントに従って、配列内で繰り返す必要がある値を見つけることに関して:

array_count_values() を使用できます。

$valueCount = array_count_values($counts);
print_r($valueCount);

出力します:

Array
(
    [1] => 2
    [2] => 1
    [17] => 1
    [8] => 2 
)

そこから、そのデータを必要なものに使用できます。
ドキュメント: http://php.net/manual/en/function.array-count-values.php

于 2012-06-24T07:21:48.147 に答える
1

なぜだめですか:

foreach ($values as $key=>$value)
    $max = max(substr_count($value,'|')+1,$max);

echo $max;

配列の分割や格納はありません。:)

于 2012-06-24T07:28:30.363 に答える
0

配列内の最大値を見つけるために使用できますmax()。例を次に示します

echo max(array(1, 5, 7, 2, 3));

これはあなたに与えるはずです17

foreach ($values as $item)
{
    $temp[] = substr_count($item, "|") + 1;
}

echo max($temp);
于 2012-06-24T07:19:37.977 に答える
0

substr_count($key,'|')+1の代わりにおそらく使用できますexplode

編集:私は質問を明確に理解していないと思っています。おそらくもっと明確に書くことができますか?なぜkey関数を使用しているのですか?

于 2012-06-24T07:22:14.070 に答える