次のような 2 つの戻り値を持つ関数を持つことは可能ですか:
リーリーその場合、それぞれの返品を個別に取得するにはどうすればよいですか?
P粉5485126372024-03-26 11:41:34
技術的には、複数の値を返すことはできません。ただし、この制限を回避する方法はあります。複数の値を返す最も似た方法は、list
キーワードを使用することです:
技術的には、実際の配列を保存するのではなく、配列を返し、list
を使用してその配列の要素を別の値で保存します。この手法を使用すると、感じます最も複数の値を返すようになります。
list
この解決策は php 固有のものです。一部の言語には同様の構造がありますが、そうでない言語はさらに多くあります。複数の値を「返す」ために一般的に使用される別のメソッドがあり、これはほぼすべての言語で (何らかの形で) 利用できます。ただし、このアプローチはまったく異なるように見えるため、慣れるまでに時間がかかるかもしれません。
このテクノロジは、PHP 自体によって定義された一部の関数でも使用されます (たとえば、str_replace、preg_match の $matches)。これは、複数の値を返すこととは大きく異なるように感じるかもしれませんが、少なくとも知っておく価値はあります。
リーリー
上記のメソッドは、関数が複数の値を返す主な方法をまとめたものです。ただし、これらの方法にはいくつかのバリエーションがあります。 PHP では配列を使用して多くのことができるため、最も興味深いバリアントは実際に配列を返すバリアントです。まず、配列を配列以外のものとして扱わずに、単純に配列を返すことができます。
リーリー
上記のコードの最も興味深い部分は、関数内のコードが最初に提供した例と同じであり、関数を呼び出すコードのみが変更されていることです。これは、関数の呼び出し元が関数によって返された結果をどのように扱うかは、関数を呼び出した人次第であることを意味します。または、連想配列を使用することもできます。
リーリー
Php にはcompact 関数があり、これを使用すると、上記と同じことを、より少ないコードで実行できます。 (まあ、サンプルのコードは減りませんが、実際のアプリケーションではおそらくコードが減ります。) ただし、入力の節約は最小限で、コードが読みにくくなると思うので、自分ではやりません。ただし、ここに例があります:
リーリー
compact には、ここでの呼び出しコードで使用できる
extract に相当するものがありますが、これを使用するのは悪い考えであることに注意してください (特に次のようなものに対して)このように簡単です)、サンプルさえ与えません。問題は、変数が「魔法のように」作成されるため、コードの他の部分を見ないとどの変数が作成されるのかを確認できないことです。
最後に、list
は連想配列ではうまく機能しないことに言及したいと思います。以下はあなたの期待に応えます:
ただし、次の場合は動作が異なります:
リーリー 連想配列で list
を使用し、将来他の誰かが呼び出された関数のコードを変更する必要がある場合 (これはどのような場合でも起こり得る)、突然壊れる可能性があるため、お勧めします。 list
配列を連想配列とともに使用しないでください。
P粉7175959852024-03-26 09:06:04
2 つの変数を返すことはできません。ただし、 配列を伝播して返したり、動的変数を返す条件を作成したりすることはできます。 たとえば、この関数は
$var2 を返します。
リーリー
アプリ内:
両方が必要な場合は、関数を少し変更できます
リーリー