我正在尝试编写一个自定义函数,试图避免每次我在循环中调用数组时重写if(isset(:
function ifvalueexists($valueexists){
if(isset ($valueexists ) ){
$newvalue = $valueexists;
return $newvalue;
}
else {
$newvalue = '';
}
return $newvalue;
}
测试:
$myarray = array(1, 2, 3);
for ($i = 0; $i < 5; ++$i){
echo ifvalueexists($myarray[$i]);
}
但我仍然得到:未定义的偏移量:3 和未定义的偏移量:4。 我做错了什么?谢谢!
数据访问是在调用函数之前进行的。您正在尝试将不存在的数组索引作为参数发送到函数。 您可以使其工作,但您需要将整个数组作为参数以及您尝试访问的索引一起传递,以避免无效索引,如下所示:
function ifvalueexists(array $value, $index) {
if(isset ($value[$index] ) ){
return $value[$index]; // why not just return the value directly?
}
return ''; // no need for else here
}
如果你想在一行中做到这一点,你也可以这样做:
function ifvalueexists(array $value, $index) {
return isset($value[$index]) ? $value[$index] : '';
}
我认为
您可能使代码过于复杂。这只是一行,而不是您拥有的 10+ 行代码。
$myarray = array(1, 2, 3);
for ($i = 0; $i < 5; ++$i){
echo (isset($myarray[$i])) ? $myarray[$i] : '';
}
您可以使用
array_key_exists:
$myarray = array(1, 2, 3);
for ($i = 0; $i < 5; ++$i){
if(array_key_exists($i , $myarray)
echo $myarray[$i];
}