2012-10-01 2 views
0

나는 if 문을 많이 가지고 있으며 전달 된 정보를 기반으로 다른 필터를 사용합니다. 지금 이것은 나중에 코드에서if 문 안에 변수를 전달 PHP

내가 여기 변수

$over5hours = "$workextra->id > 767 && $workextra->id <=1301"; 

이며, IF 문에 해당 필터를 다시 사용할 필요가 내 문

if($userid==$workextra->ownerId && $workextra->hoursDone >= 5 && $over5hours) 

하지만 그 변수를 over5hours 경우 IF 문에 전체 문자열을 쓰는 대신> 767 & & < 1301 만 표시합니다.

변수를 배열로 변환하는 것 외에는 더 쉬운 방법이 있습니다. 이미 끔찍한 초보자 코드를 부 풀릴 때 IF 문을 2x 작성해야합니다. 어떤 제안?

+0

'$ over5hours' 변수는 함수 여야합니다. – Malachi

답변

2

귀하의 목표를 이해한다고 가정하면 $ over5hours의 가치를 둘러싼 따옴표를 간단히 삭제할 수 있습니다.

$over5hours = $workextra->id > 767 && $workextra->id <=1301; 

나는 당신의 목표를 오해 할 수도 있습니다.

+0

저는 똑같은 것을 말하려고했습니다. 그러면 조건이 즉시 실행되고 $ over5hours를 true 또는 false로 설정합니다. –

+0

'$ workextra-> id'는 이것이 설정되었을 때와 재사용 될 때 사이에서 바꿀 수 없다는 것과 조건에 변수를 할당함으로써 true 또는 false 인 부울을 생성한다고 덧붙입니다. – ernie

1

그런 문장은 삽입 할 수 없습니다. ... && $over5hours은 표현식으로 $over5hours을 평가하지 않습니다. 그것은 단지 문자열이고 $anyRandomString == true과 같습니다. 당신이 할 수있는 가장 먼저 부울 값으로 식을 평가하고 if 성명에서 그것을 사용하는 것입니다 :

$over5hours = $workextra->id > 767 && $workextra->id <=1301; 
if ($userid == $workextra->ownerId && $workextra->hoursDone >= 5 && $over5hours) 
0

를 대신 따옴표 작은 따옴표를 사용하는 경우, 변수는 계산되지 않습니다.

또한 $ workextra-> id의 값이 변경되지 않은 경우 따옴표를 생략 할 수 있습니다.

0

작은 따옴표를 사용하거나 인쇄하려면 $를 이스케이프 처리해야합니다. 그 외에도 eval()을 사용하여이 코드를 원하는 방식으로 실행해야합니다. 그러나 eval()을 사용하는 것은 나쁜 습관입니다. 다른 접근법을 찾아야 할 것입니다.