我尝试编写一个自定义函数,试图避免重写if(每次在循环中调用数组时都是isset:
function ifvalueexists($valueexists){
if(isset ($valueexists ) ){
$newvalue = $valueexists;
return $newvalue;
}
else {
$newvalue = '';
}
return $newvalue;
}
TEST:
$myarray = array(1, 2, 3);
for ($i = 0; $i < 5; ++$i){
echo ifvalueexists($myarray[$i]);
}
但我仍然得到:未定义的偏移量:3和未定义的偏移量:4。我做错了什么?谢谢!
答案 0 :(得分:6)
在您正在调用该功能之前,正在进行数据访问。您正尝试将不存在的数组索引作为参数发送到该函数。你可以让它工作,但你需要将整个数组作为参数与你试图访问的索引一起传递,以避免无效索引,如下所示:
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] : '';
}
答案 1 :(得分:1)
我认为您的代码可能过于复杂。这只是一个班轮,而不是你拥有的10多行代码。
$myarray = array(1, 2, 3);
for ($i = 0; $i < 5; ++$i){
echo (isset($myarray[$i])) ? $myarray[$i] : '';
}
答案 2 :(得分:0)
您可以使用 array_key_exists :
$myarray = array(1, 2, 3);
for ($i = 0; $i < 5; ++$i){
if(array_key_exists($i , $myarray)
echo $myarray[$i];
}