if(在循环函数内部)

时间:2016-02-11 19:45:10

标签: php

我尝试编写一个自定义函数,试图避免重写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。我做错了什么?谢谢!

3 个答案:

答案 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];
}