• (转)PHP不用第三个变量交换两个变量的值的几种方法


    方法一:使用字符串截取(适用于字符串类型)

     

    <?php

    $a = "fsdfds";

    $b = "xiaorui";

    $a = $a.$b;

    $b = substr($a,0,strlen($a)-strlen($b));

    $a = substr($a,strlen($b));

    echo $a."-".$b;

    ?>

    方法二:使用list()

     

    <?php

    $a = "fsdfds";

    $b = "xiaorui";

    list($a,$b) = array($b,$a);

    echo $a."-".$b;

    ?>

    方法三:使用数组分割(适用于字符串类型

    <?php

    $a = "fsdfds";

    $b = "xiaorui";

    $b = $a."#$".$b;

    $b = explode("#$",$b);

    $a = $b[1];

    $b = $b[0];

    echo $a."-".$b;

    ?>

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

    方法四:使用异或运算

     /**

     * 原始二进制:
     * $a:010101000110100001101001011100110010000001101001011100110010000001000001
     * $b:010101000110100001101001011100110010000001101001011100110010000001000010
     * 
     * 下面主要使用按位异或交换,具体请参照下列给出的二进制过程,
     */
    $a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011
    $b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001
    $a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010
    echo '交换之后 $a 的值:'.$a.', $b 的值:'.$b,'

    方法五:使用数组

    <?php

    $a = "fsdfds";

    $b = "xiaorui";

    $a = array($b, $b = $a)[0];

    echo $a."-".$b;

    ?>

    方法六:使用数组 

     // 输出原始值

    $a .= $b; // 将$b的值追加到$a中

    $b = str_replace($b, "", $a); // 在$a(原始$a+$b)中,将$b替换为空,则余下的返回值为$a

    $a = str_replace($b, "", $a); // 此时,$b为原始$a值,则在$a(原始$a+$b)中将$b(原始$a)替换为空,则余下的返回值则为原始$b,交换成功

    echo '交换之后 $a 的值:'.$a.', $b 的值:'.$b,'

     // 输出结果值

  • 相关阅读:
    写在vue总结之前(一)
    前端应该掌握的web基础和网络知识
    sass之为什么要使用预处理器
    ThinkPHP简单的验证码实现
    ajax接收php返回得到一堆html代码
    Bootstrap 4,“未捕获错误:Bootstrap工具提示需要Tether(http://github.hubspot.com/tether/)”
    百度AI开放平台- API实战调用
    最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
    C#避免踩坑之如何添加paint事件
    php插入mysql中文数据出现乱码
  • 原文地址:https://www.cnblogs.com/fxlttkl/p/7269560.html
Copyright © 2020-2023  润新知