2011-04-05 2 views
2

나는이 유효한 PHP입니까? 복합 문

if($x != (y&&z&&r&&w)) 

그런 짓을 아니면 내가 비교하는 많은 변수가 단지 더 우아한 솔루션을 원하기 때문에 그냥 궁금이

if($x!=y && $x!=z && $x!=r && x!=w) 

처럼 작성해야 할 수 있다면 .

어쨌든 더 세련된 해결책이 될 수도 있습니다. 여기 내가하려는 일이있다.

내 $ _POST 문에서 비교할 변수가 약 6 개 더 있으며 코드를 꽤 좋아하고 싶습니다. 이것은 기본적으로 MySQL 삽입 문을 사용하기 위해 특정 키를 사용하여 특정 배열 ($ cp [])으로 포맷해야하는 거대한 형식입니다.

멋진 아이디어가 있습니까? 코드의

답변

4

귀하의 제 1 부분 : (그 상수가 존재하지 않는 경우, 문자열 'y', 'z', 'r''w')

if($x != (y&&z&&r&&w)) 

는 상수 y, z, rw을 평가합니다; 그 중 하나 사이에 AND을 사용합니다.

그러면이 AND의 결과는 $x과 비교됩니다.이 값은 부울로 간주됩니다.


그래서, 아니, 아주 당신이 희망 일을 아니에요; 당신은 코드의 두 번째 부분 사용해야합니다 : 여기, 너무, 그것은 y라는 상수를 검색 할 수 있습니다

if($x!=y && $x!=z && $x!=r && x!=w) 

주, zrw(또는 문자열, 그 상수가 아직 존재하지 않는 경우) - 변수로 취급되기를 기대한다면 아마도 앞에 $을 넣어야합니다. 어떤 생각

if (in_array($x, array(10, 20, 30))) { 
    // $x is one of those values : 10, 20, 30 
} 

: 당신이 변수가 다음 몇 가지 값 중 하나는, 가능한 해결책은 배열로 그 값을 넣어하는 것입니다 있으며, 경우 테스트하려면


in_array() 기능을 사용 몇 가지 비교를 쓰는 것보다이 방법을 이해하는 것이 더 쉽습니다. - 때로는이 방법을 나 자신과 같이 사용합니다.

+0

물론, 저는 그냥 속기를 사용하고있었습니다. 변수/문자열/정수를 나타낼 수 있습니다. 나는 그것과 비교할 더 구체적인 무엇인가를 가질 것이다. IE if ($ key! = $ x && $ key! = $ y). 답변 해주셔서 감사합니다! – Ryan

2

긴 양식을 작성하거나 in_array과 값을 포함하는 배열을 사용해야합니다.

0

당신은 내가 또한 우리가

if (1 < $x < 5) 

을 할 수 있는지 여부를 내 초기에 궁금하고 응답이 더 너무 없다는 것을

같은

if ($x != (1&&2&&3)) 

을 말할 수 없습니다. 한 번에 여러 값을 확인하는하지만 배열에서 어떤 경우 테스트 in_array()를 사용할 수 있습니다

http://php.net/manual/en/function.in-array.php

1

당신을 당신이 이런 식으로하지

if($x != (y&&z&&r&&w)) 

그들은이 4 개의 비교로 분리된다. 당신이 검증하는 함수를 작성,이 여러 번 comparions되는 일을하는 경우,

$skip_keys = array('a', 'b', 'c', 'd'); 

foreach ($_POST AS $key => $value) { 
    if (! in_array($key, $skip_keys)) { 
     // Continue 
    } 
} 
+0

감사합니다. 이것은 제가 찾던 해결책이었습니다. 우아하고 작으며 쉽게 관리 할 수 ​​있습니다. – Ryan

0

나의 추천 :

또는 당신이 할 수있는 일은 배열의 값을 스틱 만 1 개 비교를 가지고있다 당신의 요구 사항. 따라서 '$ x'를 전달하고 필요한 모든 것을 비교하여 부울 결과를 얻습니다. 이 함수는 if와 elseif로 멋지게 구조화 될 수 있으며 코드를보다 깨끗하게 유지할 수 있습니다. 그래서

, 예 ...

<?php 
// random, bad logic, but you get the idea 
function validateThisThing($x) { 
    $toReturn = false; 
    if ($x == 'this') { 
     $toReturn = true; 
    } elseif ($x == 'that') { 
     $toReturn = true; 
    } 
    return $toReturn; 
} 

필요에 따라 그럼 그냥 그 기능을 사용할 수 있습니다 및 확인되고 있는지에 컨텍스트를 가져올 것이다 함수 이름으로 깨끗하고 구조화 된 수표를 유지한다.