2011-12-29 16 views
-1

URLまたはベクトル形式またはテキスト形式の変数を読み込む方法が見つからないため、繰り返しの値が になります。ただ1つの値である場合、それを表示する必要があります。または、すべての値が の場合は、すべて表示する必要があります。私を助けてください!それはかなり緊急です。 たとえば、私は1,2,3,1,4を持っているなら、私は1を表示したいと思います。 ヘルプが必要です。アルゴリズムphp、カウントおよび表示変数

$values = $_GET['intrebare']; 
$count = count($values); 

foreach($values as $val =>$array) 
{ 
    //echo $val . '<br/>'; 
    //var_dump($array); 

    if(is_array($array)) 
    { 
     var_dump($array); 
    } 
    else 
    { 
     echo $val; 
    } 
} 

私はあなたが何のダブルスがないかどうかを確認するために、あなたの入力配列にarray_unique使用することができます:(

答えて

1

array_unique後の配列は、前と同じように大きい場合、あなたはすべての値を印刷する必要があり助けを必要としてください。

配列にすべての一意の値が含まれていない場合、複数回発生するすべての値を出力したい場合は、最初にarray_count_valuesの値複数回出現して印刷してください。

残りはあなた次第です:) array_count_valuesを使用して

+0

ホッパが、私は申し訳ありませんが、代わりにURLでURLから意味、そしてあなたが私を助けることができますコード? pleasecanあなたが私を助け、それは非常に重要ですplease – UGD

+0

少なくとも、サンプルURLを提供する必要があります。 – hoppa

+0

これは全体のコードです*私はそれを修正しました)...しかし、動作しません... – UGD

0

は行くための最も簡単な方法ですが、場合には、あなたが探しているものを達成するためにどのように把握する必要があり、ここでは詳細なバージョンがあります。

$input = array(1, 2, 3, 4, 1); 
$unique = array_unique($input); 

// If $input and $unique are different in length, 
// there is one or more repeating values 
if (count($input) !== count($unique)) { 
    $repeat = array(); 

    // Sort values in order to have equal values next to each other 
    sort($input); 

    for ($i = 1; $i < count($input) - 1; $i++) { 
     // If two adjacent numbers are equal, that's a repeating number. 
     // Add that to the pile of repeated input, disregarding (at this stage) 
     // whether it is there already for simplicity. 
     if ($input[$i] === $input[$i - 1]) { 
      $repeat[] = $input[$i]; 
     } 
    } 

    // Finally filter out any duplicates from the repeated values 
    $repeat = array_unique($repeat); 

    echo implode(', ', $repeat); 
} else { 
    // All unique, display all 
    echo implode(', ', $input); 
} 

簡潔なワンライナーっぽいバージョンは次のようになります。私は私の質問に誤りがあり

$input = array(1, 2, 3, 4, 1); 
$repeat = array_keys(
    array_filter(
     array_count_values($input), 
     function ($freq) { return $freq > 1; } 
    ) 
); 

echo count($repeat) > 0 
     ? implode(', ', $repeat) 
     : implode(', ', $input); 
関連する問題