4

PHPで2つの変数の値を置き換えることができるかどうか疑問に思いました。

私はそれをよりよく説明することができます:

<?php
    $a = "Cat";
    $b = "Dog";

    // The strange/non-existent function I am talking about //
    MakeSubstitution($a, $b);

    // After this (non-existent) function the values of the variables should be:
        // $a = "Dog"
        // $b = "Cat"
?>

それで、それは存在しますか?検索しましたが、結果が見つかりませんでした。前もって感謝します。

4

2 に答える 2

16

これを試して :

$a = "Cat";
$b = "Dog";

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

echo $a;
echo $b;
于 2013-03-06T13:27:41.130 に答える
6

関数内で参照してそれらを処理し、それらの値を交換します。

function swap ( &$a, &$b ) {
    $t = $a; // Create temp variable with value of $a
    $a = $b; // Assign to $a value of $b
    $b = $t; // Assign to $b value of temp variable
}

$dog = "dog";
$cat = "cat";

swap($dog, $cat);

echo $dog; // Output 'cat'

どうやら、ビット演算子も使用でき、一時的な関数/変数/配列を作成するオーバーヘッドを回避できます。

$cat = "cat";
$dog = "dog";

$cat = $cat ^ $dog;
$dog = $cat ^ $dog;
$cat = $cat ^ $dog;

echo $cat . $dog; // Output 'dogcat'

ビット単位のアプローチの素晴らしいイラストを見つけることができました:https ://stackoverflow.com/a/528946/54680

于 2013-03-06T13:31:06.130 に答える