[解決済み] 2つの変数の値を入れ替えるPHPの関数はありますか?
2023-06-24 06:42:45
質問
例えば、私は...
$var1 = "ABC"
$var2 = 123
で、特定の条件下では、この2つを以下のように入れ替えたいのですが...
$var1 = 123
$var2 = "ABC"
これを行うためのPHPの関数はありますか?
$var3 = $var1
$var1 = $var2
$var2 = $var3
このような単純なタスクでは、おそらく第3の変数を使用する方が早いでしょうし、本当に必要であればいつでも独自の関数を作成できます。ただ、そのようなものが存在するかどうかは疑問に思っています。
更新:第3の変数を使用するか、関数でラップするのが最良の解決策です。これはクリーンでシンプルです。私は興味本位で質問をしましたが、選ばれた答えは「次善の策」のようなものでした。ただ、3番目の変数を使用します。
どのように解決するのですか?
TL;DR
組み込みの機能はありません。使用する
swap3()
を使ってください。
概要
多くの方がおっしゃっているように、この方法には複数の方法がありますが、最も注目すべきはこの4つの方法です。
function swap1(&$x, &$y) {
// Warning: works correctly with numbers ONLY!
$x ^= $y ^= $x ^= $y;
}
function swap2(&$x, &$y) {
list($x,$y) = array($y, $x);
}
function swap3(&$x, &$y) {
$tmp=$x;
$x=$y;
$y=$tmp;
}
function swap4(&$x, &$y) {
extract(array('x' => $y, 'y' => $x));
}
4つのメソッドを1000回のforループでテストし、最も高速なものを探しました。
-
swap1()
= のおおよその平均をスコア化したものです。 0.19 秒です。 -
swap2()
=のおおよその平均を得点化したものです。 0.42 秒です。 -
swap3()
=のおおよその平均を得点化したものです。 0.16 秒です。 優勝! -
swap4()
= のおおよその平均を得点化したものです。 0.73 秒です。
そして読みやすさのために、私は
swap3()
は他の関数より優れています。
ノート
-
swap2()
そしてswap4()
は関数呼び出しのため、常に他のものよりも遅くなります。 -
swap1()
とswap3()
の両者のパフォーマンススピードは非常に似ていますが、ほとんどの場合swap3()
の方がわずかに速いです。 -
警告です。
swap1()
は数字に対してのみ働きます!
関連
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み] PHP と mod_fcgid: handle_request_ipc 関数で ap_pass_brigade が失敗する。
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] PHPでパスワードをハッシュ化するためにbcryptを使用するにはどうすればよいですか?
-
[解決済み] Pythonの変数名や関数名の命名規則について教えてください。
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】未定義の関数mysql_query()をLoginで呼び出す【重複
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法