PHP foreach对象数组和单个对象?

时间:2011-03-02 01:08:21

标签: php foreach

我有一个相当大的PHP脚本,经常使用foreach循环。它现在的工作方式是我将一个对象数组传递给每个foreach循环,但我想修改脚本以仅使用一个对象。我真的很讨厌,并且不认为在每个循环之前检查它是否合理,如果它是一个对象数组或者只是一个对象,并且根据情况循环遍历数组或只是用单个对象做事。 这有什么解决方法吗? 提前致谢

3 个答案:

答案 0 :(得分:16)

$item = $obj;
// or
$item = array( ... );

if(!is_array($item))
   $item = array($item);

foreach($item as $individual)
{
   //...
}

答案 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);
    }
}

答案 2 :(得分:0)

听起来你需要写一个函数/这是否符合你的目的?

if(is_array($thingy)){
    foreach($thingy as $thing){
        function($thing);
    }
}else{
    function($thingy);
}