我想用这个可能的论证来创造函数:s
leFunction ((string) $type,(string) $data)
,这很简单,开关用给定的类型定义$ return(做任何切换都可以用$ data做)。例如,我可以将1865年作为$ data发送,如果$ type是“fromYear”和$ data is_numeric,它将执行它应该做的任何事情。 leFunction ((string) $type,(array) $data)
,这就是它变得棘手的地方。想法是,使用第二个选项,我可以传递与("fromYear", array("year" => 1865, ....) )
相同的参数,然后检查是否is_numeric($data["year"])
并继续使用相同的代码。但是当我将两个部分组合在一起时,如果出现这种情况,我就不会这么做了:
if (is_numeric($data) || (is_array($data) && isset($data["year"])))
然后我用父obj的函数替换了第二部分:
if (is_numeric($data) || is_numeric($this->setIfGet("year", $data)))
FUNC:
/**
* @param $needle string key
* @param $haystack array source
* @param bool $null make true if value of $needle could be null
* @return bool
*/
protected function setIfGet($needle, $haystack, $null = false)
{
return (isset($haystack[$needle])) ? $haystack[$needle] : ($null) ? (array_key_exists($needle, $haystack) ? $haystack[$needle] : false): false;
}
但问题在于:如果我想从$ data参数中回复年份,我需要做
if (...) {
echo $data;
...
}
但是如果$ data是数组,而我想要回复的年份是
,它就无法工作$data["year"];
如何让1回音的两种情况都能正常工作。
答案 0 :(得分:0)
我想我找到了自己问题的答案:
if (is_numeric($newData = $data) || is_numeric($newData = self::setIfGet("year", $data))){
echo $newData;