Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Tipps: Lösung zum Austauschen zweier Variablenwerte, ohne eine dritte Variable zu verwenden

PHP-Tipps: Lösung zum Austauschen zweier Variablenwerte, ohne eine dritte Variable zu verwenden

大家讲道理
Freigeben: 2016-11-11 09:14:46
Original
1108 Leute haben es durchsucht

Vorwort

Das letzte Mal im Artikel „Detaillierte Erläuterung des PHP-Blasensortierungsalgorithmus“ habe ich die grundlegende Methode zum Austauschen der Werte zweier Variablen in PHP erwähnt, da es hauptsächlich um die Blasensortierung ging. Deshalb habe ich mich nicht näher damit befasst. Deshalb werfen wir heute einen Blick darauf, wie wir den Zweck des Austauschs von zwei Variablen erreichen können, ohne eine dritte Variable in PHP zu verwenden.

Text (Erklärung siehe Codekommentare)


1. substr() && strlen()

Code:

<?php
/**
 * 双方变量为字符串时,可用交换方法一
 * 使用substr()结合strlen()两个方法达到交换变量值得目的
 */$a = "This is A"; // a变量原始值$b = "This is B"; // b变量原始值echo &#39;交换之前 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出原始值$a .= $b; // 将$b的值追加到$a中
/**
 * $b得到$a值详解:
 *      先通过strlen()分别计算出$a和$b中字符串的长度【此时$a是原始$a和$b的合值】
 *      通过strlen($a)-strlen($b)即可得出原始$a的值长度
 *      在通过substr()方法在合并后的$a中从0开始截取到$a的长度,那么即可得到原始$a的值
 * $a得到$b值详解:
 *      由于此刻$b已经是$a的原始值了,而$a合并后的值为原始$a+原始$b的值,故用substr()在$a中从$b(原始$a)长度位置截取,则去的内容则为原始$b,则将$b值付给$a成功
 */$b  = substr($a,0,(strlen($a)-strlen($b)));$a  = substr($a, strlen($b));echo &#39;交换之后 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出结果值
Nach dem Login kopieren

Laufergebnis:

交换之前 $a 的值:This is A, $b 的值:This is B
交换之后 $a 的值:This is B, $b 的值:This is A
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

2. str_replace()

Code:

<?php/**
 * 双方变量为字符串时,可用交换方法二
 * 使用str_replace()方法达到交换变量值得目的
 * 此方法较第一种,逻辑上稍微简单点
 */$a = "This is A"; // a变量原始值$b = "This is B"; // b变量原始值echo &#39;交换之前 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出原始值$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 &#39;交换之后 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出结果值
Nach dem Login kopieren

Laufergebnis:

交换之前 $a 的值:This is A, $b 的值:This is B
交换之后 $a 的值:This is B, $b 的值:This is A
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

3 🎜 >Code:

Laufergebnis:

<?php/**
 * 双方变量为字符串时,可用交换方法三
 * 使用list()和array()方法达到交换变量值得目的
 * 此方法较第一、二种,代码最简洁
 */$a = "This is A"; // a变量原始值$b = "This is B"; // b变量原始值echo &#39;交换之前 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出原始值list($b,$a) = array($a,$b); // list() 函数用数组中的元素为一组变量赋值。了解这个,相信其他的不用我多说了吧echo &#39;交换之后 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出结果值
Nach dem Login kopieren


4. XOR

交换之前 $a 的值:This is A, $b 的值:This is B
交换之后 $a 的值:This is B, $b 的值:This is A
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Code:

Betriebsergebnisse:

<?php/**
 * 双方变量为字符串或者数字时,可用交换方法四
 * 使用异或运算
 */$a = "This is A"; // a变量原始值$b = "This is B"; // b变量原始值echo &#39;交换之前 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出原始值/**
 * 原始二进制:
 * $a:010101000110100001101001011100110010000001101001011100110010000001000001
 * $b:010101000110100001101001011100110010000001101001011100110010000001000010
 * 
 * 下面主要使用按位异或交换,具体请参照下列给出的二进制过程,
 */$a=$a^$b; // 此刻$a:000000000000000000000000000000000000000000000000000000000000000000000011$b=$b^$a; // 此刻$b:010101000110100001101001011100110010000001101001011100110010000001000001$a=$a^$b; // 此刻$a:010101000110100001101001011100110010000001101001011100110010000001000010echo &#39;交换之后 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出结果值
Nach dem Login kopieren


5. Addieren Sie () minus (-) Operator

交换之前 $a 的值:This is A, $b 的值:This is B
交换之后 $a 的值:This is B, $b 的值:This is A
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Code:

Betriebsergebnisse:

<?php/**
 * 双方变量为数字时,可用交换方法五
 * 使用加减运算符,相当于数学运算了^_^
 */$a = "This is A"; // a变量原始值$b = "This is B"; // b变量原始值echo &#39;交换之前 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出原始值$a=$a+$b; // $a $b和值$b=$a-$b; // 不解释..$a=$a-$b; // 不解释..echo &#39;交换之后 $a 的值:&#39;.$a.&#39;, $b 的值:&#39;.$b,&#39;<br>&#39;; // 输出结果值
Nach dem Login kopieren


Zusammenfassung

交换之前 $a 的值:1, $b 的值:2交换之后 $a 的值:2, $b 的值:1
Nach dem Login kopieren
ok, das Obige ist fast der Austausch zweier Variablen in PHP ohne die Verwendung von eine dritte Variable Es gibt natürlich alle Methoden für Variablenwerte. Ich bin nur hier, um andere zu inspirieren.

Letztendlich sind es alles kleine Algorithmen, die Sie selbst studieren können, wenn Sie Zeit haben.

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage