2014-09-17 6 views
0

PHP를 처음 사용했습니다. 어떤 필드가 특정 양식에서 비어 있지 않은지 확인하려고하므로 foreach 문을 사용했지만 한 번에 하나씩 만 확인합니다. 사용자 이름과 암호가 모두 비어 있지 않은 경우는 한 그들 중 하나가 비어 있지 않은 것처럼 표시foreach 문이 모든 조건을 검사하지 않음

<?php 

if (isset($_POST[submit])) { 
    ValidateUser(); 
} 

function ValidateUser() { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $details = array($username, $password); 

    foreach($details as $detail) { 
     if (!empty($detail)) { 
      echo "hurrayy"; 
     } 
    } 
} 

?> 

그래서 대신 "hurrayy"을 표시 :

여기 내 코드입니다. 도와주세요.

+0

둘 다 비어 있지 않으면 "hurrayy"가 두 번 표시됩니까? PHP가 I * do * 알고있는 언어와 같은 경우, 모든 항목을 하나씩 반복합니다. 두 값을 모두 확인하십시오. –

+0

'$ username = $ _POST [ 'username'];''POST '에'username' 키가 없으면 에러가 발생합니다. 또한 checkbox와 non가 선택되면 체크 박스의'POST'에 아무 항목도 없을 것입니다. – Justinas

+0

@hans 예 둘 다 비어 있지 않으면 "hurrayy"를 두 번 표시합니다. – babyleans

답변

1

당신은 배열과 루프 5, 아니 루프없이 배열 할당에 이르기까지

function ValidateUser() { 
    if(!empty($_POST['username']) AND !empty($_POST['password'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    echo "Hurray!"; 
    } 
} 

8 라인에 할당 할 필요가 없습니다.

+0

감사하지만 당신은 foreach 루프와 함께 할 방법을 알고 싶었지만 마음에 이것을 계속거야 . 감사! – babyleans

+0

나는 당신의 추론을 이해한다. 그러나 당신이 제공하는 시나리오 (로그인 시스템)에서 정말로 필요하지는 않지만 충분히 공평하다고 권하고 싶다. 새로운 것을 배우는 데는 아무 잘못이 없습니다! – iamgory

+1

사실 내가 당신의 방법을 사용하여 끝났다. – babyleans

1

메시지가 한 번 echoed 된 후 break을 추가하십시오. 루프 foreach을 중지합니다.

foreach($details as $detail) { 
    if (!empty($detail)) { 
     echo "hurrayy"; 
     break; 
    } 
} 
0

그래서 당신은 아무도 배열의 필드의가 비어없는 경우에만 "hurrayy"를 표시하려면? 먼저 모두 확인한 다음 결정해야합니다. 그 두 값이없는 경우에도 $username$password이 배열의 값으로 간주되기 때문에

function ValidateUser() { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $details = array($username, $password); 

    $empty_field = false; 

    foreach($details as $detail) { 
    if (empty($detail)) { 
     $empty_field = true; 
    } 
    } 

    if (!$empty_field) 
    echo "hurrayy"; 
} 
+0

나는 이것이 지금까지 최고의 대답이라고 생각한다. 나는 이것이 바보 같은 질문 인 것을 안다. 그러나 왜 $ empty_field는 true와 false 값을 모두 가지고 있는가? – babyleans

+0

아직 빈 필드를 찾지 못해서 시작하는 것이 거짓으로 설정됩니다. 그런 다음 'foreach'에있는 각 디테일을 체크하고 비어 있다면 그것을 true로 설정합니다. 그때 아무 것도 필드가 비어있는 경우 그래서 그것은 여전히 ​​거짓말과 "hurrayy"에코 것입니다 – colmde

0

네,이 경우 문을 입력합니다.

관련 문제