私はかなり頻繁にforeachループを使用するかなり大きなPHPスクリプトを持っています。今のところ動作する方法は、すべてのforeachループにオブジェクトの配列を渡すことですが、オブジェクトだけで動作するようにスクリプトを変更したいと思います。私は本当に嫌いだし、オブジェクトの配列か単なるオブジェクトであればループの前にチェックするのは妥当ではないと思うし、配列をループする状況や単一のオブジェクトで処理する状況にもよる。 これを回避するには?あなたは、これはあなたの目的を果たすだろう/関数を記述する必要があるように、事前オブジェクトの配列と単一オブジェクトのPHP foreach?
6
A
答えて
16
$item = $obj;
// or
$item = array(...);
if(!is_array($item))
$item = array($item);
foreach($item as $individual)
{
//...
}
+0
PHPで非常に一般的なパターン、私は見つけた – meagar
0
で おかげでね?
if(is_array($thingy)){
foreach($thingy as $thing){
function($thing);
}
}else{
function($thingy);
}
+0
これは、少なくとも数十数のforeachループを追加している場合は、私が避けようとしていたものでした。関数内のすべてのforeachループの内容をラップするのは嫌です。とにかくありがとう。 – pHelics
1
1つのオブジェクトを内部に持つ配列を渡すことができます。または、多態的なコンストラクタ/関数の設定を使用します。単一のオブジェクトの配列を渡す
はここでそれに対処するためのいくつかの他の可能な方法があります、それを行う方法はかなり明白です:スクリプト内の複数のポイントであなたがいないのであれば
function test($var)
{
if(is_a($var,"ClassName")) //Test to see if the passed variable is a member of the class and not an array and put it in an array if so
{
$var = array($var);
}
foreach($var as $v)
{
//Do stuff
}
}
function test($var)
{
if(is_array($var)) //Test if object is array or class, call different functions depending on which it is
{
call_user_func_array(array($this,'doArray'),$var);
}
elseif(is_a($var,"Classname"))
{
call_user_func_array(array($this,'doObject'),$var);
}
}
関連する問題
- 1. JSON単一オブジェクトと配列の処理
- 2. foreachオブジェクト内の配列の配列
- 3. foreachオブジェクト/ jQueryの配列
- 4. php配列を単一のJSONオブジェクトに変換する
- 5. オブジェクトのjQuery配列を単一のオブジェクトに変換する
- 6. PHPオブジェクトの配列
- 7. Angular2 - ng単一オブジェクト対配列
- 8. オブジェクト配列の一時ソート
- 9. foreachループ内でphp配列から単一のランダムキーを取得
- 10. PHPオブジェクト配列
- 11. Javaオブジェクト配列Foreachメソッドへのアクセス
- 12. JSONのオブジェクトのPHP配列
- 13. 親オブジェクトと子オブジェクトの単一のNSFetchRequest
- 14. オブジェクトの配列にマッピングするときにネストされた配列内の単一のオブジェクトにアクセスする
- 15. PHPのforeachのオブジェクトと変更値
- 16. PHP foreachの配列
- 17. オブジェクトの配列への配列の配列php
- 18. PHP foreach配列
- 19. Javascript/Lodashでオブジェクト配列のオブジェクトの単一フィールドを更新する
- 20. 単一オブジェクトの代わりに複製オブジェクトの配列を取得する
- 21. 配列オブジェクト内の配列オブジェクト
- 22. PHP SimpleXMLElementオブジェクト配列キーへのアクセス
- 23. オブジェクトの配列内の単一要素を変換する
- 24. 配列内の単一のオブジェクトにアクセスできませんか?
- 25. angularjsのオブジェクト配列から単一の値を取得
- 26. 配列内のオブジェクトの単一要素を出力する。 Java
- 27. のRails 5.1:JBuilderのフォーマット単一JSONオブジェクトは、配列
- 28. PHPは、ループの配列オブジェクトをアンセット
- 29. PHP文字列の単語の配列と一致する
- 30. 型オブジェクトのPHPの配列をプリントアウト
私が言うと思いますデータフローを正しく定義する上で問題がある単一のオブジェクトまたはオブジェクトの配列のどちらで作業しているのかを確認してください。 – deceze