如果代码有2个不同的条件变量,则执行1 ...或类似的事情

时间:2016-08-12 03:08:24

标签: php arrays variables if-statement conditional-statements

我想用这个可能的论证来创造函数: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回音的两种情况都能正常工作。

1 个答案:

答案 0 :(得分:0)

我想我找到了自己问题的答案:

if (is_numeric($newData = $data) || is_numeric($newData = self::setIfGet("year", $data))){
    echo $newData;