当前位置:首页 > PHP教程 > php应用 > 列表

PHP不用第三个变量交换两个变量的值的方法总结

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-13 10:43:47 浏览: 评论:0 

变量交换我们用到最多的就是比较数据了,但我们在面试时会碰到要不用第三个变量交换两个变量的值了,下面来给各位总结一些方法.

“PHP不用第三个变量交换两个变量的值”这个题看到过好多次了,看来面试确实喜欢考这道题,今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充.

方法一:使用字符串截取

  1. <?php 
  2. $a = "fsdfds"
  3. $b = "xiaorui"
  4. $a = $a.$b
  5. $b = substr($a,0,strlen($a)-strlen($b)); 
  6. $a = substr($a,strlen($b)); 
  7. echo $a."-".$b
  8. ?> 

方法二:使用list()

  1. <?php 
  2.  $a = "php"
  3.  $b = "java"
  4.  //list()不是函数,是语言结构,它是将数组中的值赋给一些变量 
  5.  list($a,$b) = array($b,$a); 
  6.  echo $a.'---'.$b;  //java---php 
  7. ?> 

方法三:使用数组分割

  1. <?php 
  2. $a = "fsdfds"
  3. $b = "xiaorui"
  4. $b = $a."#$".$b
  5. $b = explode("#$",$b); 
  6. $a = $b[1]; 
  7. $b = $b[0]; 
  8. echo $a."-".$b
  9. ?> 

说明:这种方法也可以用于交换两个变量的值,但是这个方法听说好像不太标准,因为有人说这里的数组$b也算是一个新变量了,我有点不同意,看怎么理解了.

方法四:使用异或运算

  1. <?php 
  2. $a = "fsdfds"
  3. $b = "xiaorui"
  4. $a = $a^$b
  5. $b = $b^$a
  6. $a = $a^$b
  7. echo $a."-".$b
  8. ?> 

说明:这个方法是网上看到的,我仔细试了一下,发现这个居然是有BUG的,用次方法只能交换字符相同的两个字符串型的变量,不然结果是不正确的.

网上又找到一些方法,代码如下:

  1. //字符串版本 结合使用substr,strlen两个方法实现 
  2. $a="a"
  3. $b="b"
  4. echo '交换前 $a:'.$a.',$b:'.$b.'<br />'
  5. $a.=$b
  6. $b=substr($a,0,(strlen($a)-strlen($b))); 
  7. $a=substr($astrlen($b)); 
  8. echo '交换后$a:'.$a.',$b:'.$b.'<br />'
  9. echo '-----------------------<br/>'
  10. //字符串版本 使用str_replace方法实现 
  11. $a="a"
  12. $b="b"
  13. echo '交换前 $a:'.$a.',$b:'.$b.'<br />'
  14. $a.=$b
  15. $b=str_replace($b""$a); 
  16. $a=str_replace($b""$a); 
  17. echo '交换后$a:'.$a.',$b:'.$b.'<br />'
  18. echo '-----------------------<br/>'
  19. //字符串版本 结合使用list方法和array实现 
  20. $a="a"
  21. $b="b"
  22. echo '交换前 $a:'.$a.',$b:'.$b.'<br />'
  23. list($b,$a)=array($a,$b); 
  24. echo '交换后$a:'.$a.',$b:'.$b.'<br />'
  25. echo '-----------------------<br/>'
  26. //字符串和数字都适用 使用异或运算 
  27. $a='a'
  28. $b='b'
  29. echo '交换前 $a:'.$a.',$b:'.$b.'<br />'
  30. $a=$a^$b;  //开源软件:phpfensi.com 
  31. $b=$b^$a
  32. $a=$a^$b
  33. echo '交换后$a:'.$a.',$b:'.$b.'<br />'
  34. echo '-----------------------<br/>'
  35. //只适用于数字 
  36. $a=3; 
  37. $b=5; 
  38. echo '交换前 $a:'.$a.',$b:'.$b.'<br />'
  39. $a=$a+$b
  40. $b=$a-$b
  41. $a=$a-$b
  42. echo '交换后$a:'.$a.',$b:'.$b.'<br />';

Tags: PHP第三个变量 PHP变量交换

分享到: