所以,这是我的情况:
我得到一些存储在变量($keywords
)中的输入。
此变量可以是字符串(= 1个关键字) - 如"banana"
,也可以是数组(=多个关键字) - 如array ("banana","apple","mango")
。
这就是我使用它的方式:
foreach ($keywords as $keyword)
{
// do sth with $keyword
}
当$keyword
是数组时,此方法正常,但是当它不是我收到错误时。 (很明显)
什么是最有效的解决方法,以避免错误,同时保持我的foreach
结构原样?
这就是我想到的(放在循环之前),但我真的不喜欢它:
if (count($keywords)==1) $keywords = array($keywords);
更新:伙计们,我知道关于is_array
。我的观点是尽可能优雅地进行,不添加代码块或使用switch
或if
/ else
语句等造成混乱。
答案 0 :(得分:6)
只需将变量强制转换为数组:
$keywords = (array) $keywords;
如果变量是数组,则不会发生任何事情,否则它将转换为数组:
所以
1
将为array(1)
和
'keyword'
将为array('keyword')
答案 1 :(得分:0)
if (isset($keywords) && !is_array($keywords)) { $keywords = Array($keywords); }
else if (!isset($keywords)) { $keywords = Array(); }
答案 2 :(得分:0)
只需使用is_array命令:http://php.net/manual/en/function.is-array.php
答案 3 :(得分:0)
使用php is_array内置函数
if(is_array($keywords))
foreach ($keywords as $keyword)
{
// do sth with $keyword
}
答案 4 :(得分:0)
$type = gettype($keywords);
switch ($type)
{
case "string":
// do what you need with string
break;
case "array":
foreach ($keywords as $keyword)
{
// do smth when is array
}
break;
}
检查类型,我的解决方案允许您检查字符串,数组或其他类型,如果需要,您可以指定。
在更简单的解决方案中,使用if (is_array($keywords);