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


Pass non-existing array element to function

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

。将大量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中实现变量检查功能

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

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

== EDIT ==正如下面指出的那样,这会将不存在的变量设置为null。对于您的目的,您也可以使用echo而不是return:)

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

目前在您的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;
}