2010-04-28 2 views
3

$ var1 = 22; $ var2 = 10; echo $ var1 = ($ var1 < $ var2)? $ var1 : $ var2; // 더 작은 변수 echo '
'; echo $ var2 = ($ var1> $ var2)? $ var1 : $ var2; // greater var더 작은 값을 찾고 PHP에서 값을 교환하십시오

10 and 22을 인쇄하려고하지만 10 and 10을 인쇄합니다. 내가 뭘 잘못하고 있는거야?

감사 덕분에 모든

UPDATE.

$min = min($var1, $var2); 
    $max = max($var1, $var2); 

    $var1 = $min; 
    $var2 = $max; 

답변

4

@unicornaddict 이미 문제를 해결, 분을 사용하지만, 그것은 간단 당신이 PHP가 제공하는 minmax 기능을 사용할 수 있도록.

echo min($var1, $var2), '<br/>', max($var1, $var2); 
+0

여전히 10과 10을 인쇄합니다. ques update를 참조하십시오. thx – user187580

+0

죄송합니다 지금은 같은 확인 않았다.thx – user187580

1

처음 비교시 $ var1을 덮어 씁니다. 따라서 두 번째 비교는 10> 10을 비교합니다.

$var1 = 22; 
$var2 = 10; 
echo $var1 = (10 < 22) ? 22 : 10; //smaller var -> $var1 now has the value 10 
echo '<br />'; 
echo $var2 = (10 > 10) ? 22 : 10; //greater var -> 10 is not greater than 10, so $var2 gets a value of 10. 
4

echo의 변수를 다시 할당합니다.

// $var1 is being assigned minimum of 10,22 which is 10. 
// after this $var1 and $var2 will both be 10. 
echo $var1 = ($var1 < $var2) ? $var1 : $var2; 

당신이 원하는 무엇 :

echo ($var1 < $var2) ? $var1 : $var2; // prints min. 
echo '<br />'; 
echo ($var1 > $var2) ? $var1 : $var2; // prints max. 

편집 : 당신은 항상 $var1에 두 값 중 작은 값을 원하는 경우에

당신이 할 수 있습니다

if($var1 > $var2) { // if $var1 is larger...swap. 
     list($var1,$var2) = array($var2,$var1); 
} 
+1

나는, 당신이 사용할 수있는 대신,'스왑 주위에 if'의'목록 ($ var1에, $ VAR2) = 배열 ​​(분 ($ var1에, $ VAR2를) downvote,하지만 ...하지 않았다 max ($ var1, $ var2))'. 물론, 그때는 항상 * 할 것입니다. 그러나 이것은 매우 비싼 작업은 아닙니다. –

+0

@nikc 왜 물건을 필요 이상으로 복잡하게 만드는지; 값이 이미 올바른 변수에 포함되어 있다면, 왜이 작업을 수행해야합니까? – salathe

+0

나는 그것이 복잡하다고 생각하지 않는다. 단지 불필요한 조작을 할 수도있다. 그러나 제 의도는 대체 솔루션을 제공하는 것이 었습니다. –

1

$ var1에 10을 첫 번째 에코로 할당합니다. 그래서 secon에서 d는 모두 10입니다.

1
echo $var1 = ($var1 < $var2) ? $var1 : $var2; //smaller var 

이 값은 10을 $var1으로 지정합니다. 이제 두 변수 모두 10을 포함합니다. 두 번째 줄에는 무엇을 기대합니까?

1

임시 변수가 필요합니다. 그냥

echo min($var1, $var2); 
1

다른 질문에는 메모를 남기지 않는 값이 나와 있습니다. 예제 코드를 보면 $var1에 두 값 중 작은 값이 포함되고, 더 큰 값이 $var2 인 것으로 보입니다.

$var1 = 22; 
$var2 = 10; 
if ($var1 > $var2) { 
    list($var1, $var2) = array($var2, $var1); 
} 
// $var1 will now be smaller than (or equal to!) $var2 
+0

@Downvoters, 이유를 설명해 주시겠습니까? 스와핑은 항상 다른 사람들이 언급하지 않은 질문의 일부였습니다 (여전히 있습니다). – salathe