2011-12-29 2 views
-1

URL 또는 벡터 또는 텍스트 형식의 변수를 읽는 방법을 찾을 수 없으므로 반복되는 값은 만 반환됩니다. 값이 하나 뿐인 경우 표시해야하며, 경우에 따라 값이 다를 경우 모두 표시해야합니다. 제발 도와주세요! 꽤 시급한 일입니다. 예를 들어 1,2,3,1,4가있는 경우 1을 표시하고 모두 1,2,3,4를 표시하고 싶습니다. 도움이 필요합니다.알고리즘 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; 
    } 
} 

내가 필요로하시기 바랍니다 도움 :(

답변

1

하면 더 복식이없는 경우 확인하기 위해 입력 배열에 array_unique 사용할 수 있습니다. array_unique 후 배열 이전만큼 큰 경우, 당신은 모든 값을 인쇄해야합니다 .

배열에 모든 고유 값이 포함되어 있지 않은 경우 여러 번 나타나는 모든 값을 인쇄하려고합니다. 두 번 이상 나타나는 값만 인쇄하려면 먼저 array_count_values 값으로 확인하십시오. 두 번 이상 나타나고 인쇄하십시오.

나머지는 당신에게 달려 :)

+0

Hoppa 좋잖은, 미안, 대신 URL의 URL에서 의미하고, 당신이 나를 도울 수 암호? pleasecan 당신이 날 도와 줘, 매우 중요합니다. – UGD

+0

글쎄, 최소한 샘플 URL을 제공해야 할 것입니다. – hoppa

+0

이것은 전체 코드입니다 * 수정했습니다 ...)하지만 작동하지 않습니다 ... – UGD

0

array_count_values 갈 수있는 가장 쉬운 방법이지만, 경우에 당신은 당신이 찾고있는 무엇을 수행하는 방법을 파악해야 사용, 여기에 자세한 버전입니다.

$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);