将不存在的数组元素传递给函数

时间:2014-05-27 11:55:31

标签: php arrays

我希望在PHP中使用一个函数来获取动态元素值。

E.g。将大量echo isset($arrayFromDB['d']) ? $arrayFromDB['d'] : ''替换为函数调用echoEl($arrayFromDB['d'])

问题:如何传递不存在的数组元素?


理论算法,不起作用:

$arrayFromDB = ['a' => 'Aslovas', 'b' => 'Boslovas', 'c' => 'Coslovas'];

echoEl($arrayFromDB['d']); //Error will be here

private function echoEl($arrayElement) {
   if (isset($arrayElement)) { // Element is always set at this point
       echo $arrayElement;
   } else {
       echo '';
   }
}

是否可以在PHP中实现该变量检查功能。

2 个答案:

答案 0 :(得分:2)

注意:这也适用于多维数组

function isSetOr(&$value, $default = null)
{
    return isset($value) ? $value : $default;
}

==编辑== 如下所述,这将把非现有变量设置为null。 为了您的目的,您可以使用echo而不是return:)

function isSetOr(&$value, $default = null)
{
    echo isset($value) ? $value : $default;
}

答案 1 :(得分:0)

目前在else运算符中,您echo '';完全没有任何内容,所以我没有将其包含在内。

// array of data
$arrayFromDB = ['a' => 'Aslovas', 'b' => 'Boslovas', 'c' => 'Coslovas'];

// pass array and desired key to function
echoEl($arrayFromDB, 'd');

// function to print element if it exists
private function echoEl($array, $key) 
{
   if (isset($array[$key])) 
   {
       echo $array[$key];
   }
}

如果你想这可以在这样的循环中使用:

foreach ($arrayFromDB as $key => $value)
{
    echoEl($arrayFromDB, $key);
}

然而,并没有太多意义,因为它等同于此:

foreach ($arrayFromDB as $value)
{
    echo $value;
}