2014-09-13 4 views
0

나는 모든 행을 배열로 가져 오는 방법을 알아 내려고 일부 입력이 해당 배열의 항목으로 존재하는지 확인하려고 노력해 왔습니다. 내 테이블에서모든 테이블 행을 배열로 가져 오기 PHP

$name = $_POST["name"]; 
$myarray = array(); 
$getnames = "SELECT NAME FROM PEOPLE"; 
$names = oci_parse($conn,$names); 
oci_execute($names); 
while (($row = oci_fetch_row($names)) != false) { 
    $myarray[] = oci_fetch_row($names); 
} 

if(!in_array($name, $myarray)) { 
     echo "That name doesn't exist."; 
    } 

이 있습니다 :

array(2) { [0]=> array(1) { [0]=> string(3) "Bob" } [1]=> bool(false) } 
: 내가 입력으로 "밥"을 사용하는 경우
NAME 
Fred 
Bob 
Hamlet 

, 나는 그냥 배열에 포함 된 것을 볼 수 var_dump($myarray)을 사용

내 출력 :

That name doesn't exist. 

출력은 ("Bob"이 배열에있을 것으로 예상했기 때문에) 기대하지 않았던 것이므로 배열로 행을 가져 오는 내 방식이 적절하지 않다고 생각합니다.

행을 배열로 가져 오려면 어떻게해야합니까?

+0

'SELECT NAME'이 (가) 당신의 열이'이름 '입니까? – Ohgodwhy

+0

내 잘못이야, 오타 였어. – Alpine

답변

2

Bob이 $myarray에 값으로 존재하지 않기 때문에 작동하지 않습니다.하지만 $myarray[0][0]에 있습니다. $myarray의 첫 번째 항목의 값으로

당신은 결과 배열로 재귀 함수가 필요 : 만 신속하게 테스트

function recursive_in_array($needle, $haystack) { 
    if (!is_array($haystack)) return false; 
    $match = false; 
    foreach ($haystack as $item) { 
     if (is_array($item)) $match = recursive_in_array($needle, $item); 
     if ($match || in_array($needle, $haystack)) return true; 
    } 
    return false; 
} 

을하지만 트릭을 할해야합니다.

+0

어떻게이 기능을 사용할 수 있습니까? if (recursive_in_array ($ name, $ myarray) == true) {#do something}' – Alpine

+0

정확히, 또는 단지 if (recursive_in_array ($ name, $ myarray)) {'. 둘 다 똑같은 일을합니다. – Schlaus

+0

감사합니다, 그것은 매력처럼 일했습니다! – Alpine