我有一个相当大的php脚本,它经常使用foreach循环。它现在的工作方式是,我将一个对象数组传递给每个foreach循环,但我想修改脚本,使其也只处理一个对象。我真的很讨厌,也不认为在每次循环之前检查它是一个对象数组还是一个单独的对象,并根据具体情况来决定是遍历整个数组,还是只处理单个对象。有什么解决方法吗?提前感谢
发布于 2011-03-02 09:11:13
$item = $obj;
// or
$item = array( ... );
if(!is_array($item))
$item = array($item);
foreach($item as $individual)
{
//...
}发布于 2011-03-02 09:12:12
你可以传递一个内部只有一个对象的数组。或者使用多态构造函数/函数设置。
传递一个带有单个对象的数组是很明显的,下面是一些其他可能的处理方法:
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);
}
}发布于 2011-03-02 09:12:04
听起来你需要写一个函数/这能满足你的目的吗?
if(is_array($thingy)){
foreach($thingy as $thing){
function($thing);
}
}else{
function($thingy);
}https://stackoverflow.com/questions/5162323
复制相似问题