2014-09-22 2 views
0

안녕하세요, 약 20/30 개 항목의 배열이 있습니다.PHP 배열은 p1을 포함하는 값을 반향 출력합니다.

나는 그것을 루프에 던져서 그 안에 텍스트 p1이있는 항목 만 에코 할 필요가있다. 빈 페이지 또는 1 초

입니다
"lolly","lollyp1","top","topp1","bum","bump1","gee","geep1" 

에 내가이

foreach ($arr as $value) { 
    $needle = htmlspecialchars($_GET["usr"]); 
    $ret = array_keys(array_filter($arr, function($var) use ($needle){ 
    return strpos($var, $needle) !== false; 
    })); 

같은 것을 사용하려고했지만이 모든 날을 제공

과 같이

배열 보인다

어떻게 p1이있는 항목을 에코 할 수 있습니까? 당신이 (가) $의 rtnarray을 잃게 페이지에 직접 쓰기를 시도하는 경우

$needle = htmlspecialchars($_GET["usr"]); 
$rtnArray = array(); 
foreach ($arr as $value) { 
    $rtnArray = strpos($value,$needle); 
}; 
return $rtnArray; 

및 에코 :

+0

번째 샘플

function find_needle($var) { global $needle; return strpos($var, $needle) !== false; } $ret = array_keys(array_filter($arr, 'find_needle')); 

Codepad Example 예를 들면, 에코 "별도/정의 된 함수를 사용하여 업데이트 시도

    "; 프리 루프, 에코 "
  1. $ 값
  2. "; on 루프 반복이 일치하고 에코 "
"; 포스트 루프 –

+0

또한 1s는 무엇입니까? –

+0

페이지 넘버 1s 또는 빈 페이지 – user72261

답변

0

이 시도 후 필터 전용 'P1'을 가진 사람을 보여

$needle = htmlspecialchars($_GET["usr"]); 
foreach ($arr as $value) { 
    echo strpos($value,$needle); 
}; 

에 :

$needle = htmlspecialchars($_GET["usr"]); 
foreach ($arr as $value) { 
    $temp = strpos($value,$needle); 
    if($temp > 1){ 
     echo $value; 
    } 
}; 
+0

사용자가 p1을 입력하면 완벽하게 표시되지만 사용자가 전체 항목을 넣으면 문제가 있음을 알았습니다. usr은 gleep1과 같은 요청을 받았습니다. 그것 dosent 에코 출력 glee1 내가 어떻게 할거야 경우에만 사용자 선량을 얻을 수있는 전체 시간을 추가 – user72261

+0

사용자가 값의 시작 부분에 그것을 발견했기 때문에 strpos 당신이 0을 반환합니다 전체 값을 넣으면 . 에코 값과 일치하면 값을 바늘과 비교하여 잡을 수 있습니다. – DirtyRedz

0

문자열 비교를 통한 직접 루프를 사용하면 다음과 같은 간단한 방법으로 접근 할 수 있습니다.

0 게시물에
$needle = $_GET['usr']; 
$matches = array(); 
foreach ($arr as $key => $value) { 
    if (strpos($value, $needle) !== false) { 
     $matches[] = $key; 
    } 
} 

array_filter()의 사용 는 일, PHP의 버전을 보류 당신이 사용하고 있습니다. .... I 바늘로 "P1"의 루프 매치에서 strpos을 사용