我希望在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;
}