2010-01-25 3 views
0

I 내 ​​데이터베이스 테이블에서 오는 문자열이 $ needle이라고 말합니다. needle이 내 배열에 없으면 배열에 추가하고 싶습니다.PHP : 문자열의 배열 내용을 확인하려면 어떻게해야합니까?

그 다음 난 아직도 을 확인하기 위해 내 배열 (그래서 세 번이 될 것입니다 최대)

에 추가하려면, 너무 오래 그것은 단지 두 번에서와 같이 다음 내 배열에있는 경우 $ needle이 $ haystack 배열에 있다면, 배열을 strpos()로 반복해야합니까, 아니면 더 빠른 방법이 있습니까?

표에 많은 바늘이 있으므로 선택 결과를 통해 반복합니다.

이것은 내가 뭘하려고 오전의 개략도이다 ...

$haystack = array(); 

    while($row = mysql_fetch_assoc($result)) { 
    $needle = $row['data']; 

    $num = no. of times $needle is in $haystack // $haystack is an array 

    if ($num < 3) { 
     $$haystack[] = $needle; // hopfully this adds the needle 
     } 

    } // end while. Get next needle. 

는 아무도 내가이 비트를해야합니까 알고 있나요 :

$ NUM = 아니오. 시간의 $ 바늘 $ 건초 더미에서

감사

답변

1

당신이 모든 고유 값의 발생을 반환 array_count_values()을하셨습니까입니까?

<?php 
$a=array("Cat","Dog","Horse","Dog"); 
print_r(array_count_values($a)); 
?> 

코드의 출력은 상술 될 것이다 : 먼저, 각 값의 주파수를 포함하는 맵을 생성하는 array_count_values()을 사용하고 단지 값을 증가 할 수

Array ( 
[Cat] => 1, 
[Dog] => 2, 
[Horse] => 1 
) 
1

경우 값 (count)의 루프가 완전히 피할 수없는 것처럼

$original_values_count = array_count_values($values); 

foreach ($values as $value) 
    if ($original_values_count[$value] < 3) 
     $values[] = $value; 

, 내가 네이티브 PHP의 능을 사용을 선택하는 것이 좋습니다 말하고 싶지만 :지도는 예를 들어, < 3이었다 속도면에서 모든 값을 수동으로 반복하는 것과 비교할 때

0

또한 배열의 모든 요소에 주어진 함수를 적용하는 array_map() 함수가 있습니다.

0

어쩌면 다음과 같은가요? 그냥 Miek의 코드를 약간 변경하십시오.

$haystack_count = array_count_values($haystack); 
if ($haystack_count[$needle] < 3) 
    $haystack[] = $needle; 
관련 문제