dqask02082 2016-09-19 14:37
浏览 47
已采纳

PHP - 通过引用传递抑制未定义的索引错误?

I just noticed the following behavior in my php code and I'm wondering why it's happening.

$array = array();

test_value($array['invalid_index']); // Error -> Notice: Undefined index: invalid_index in ...
test_reference($array['invalid_index']); //No error

function test_value($value){}
function test_reference(&$value){}

I was expecting both test_value and test_reference to throw the undefined index error but strangely the method by reference doesn't throw any error.

Why?

  • 写回答

1条回答 默认 最新

  • dsxml2169 2016-09-19 14:52
    关注

    Function parameters by-reference accept variables which haven't been declared previously; they are being declared by passing them as reference. This makes complete sense if you look at typical use cases of by-reference parameters:

    $foo = preg_match('/(.)/', 'bar', $baz);
    

    This function returns one value, which will be assigned to $foo. However, this function should also return the matches, which here is the third parameter $baz. Since a function can only return a single value at a time, additional "return" values are being realised by populating variables passed by reference.

    If you had to pre-initialise these variables, your code would look like this:

    $baz = null;
    $foo = preg_match('/(.)/', 'bar', $baz);
    echo $baz[0];
    

    This makes code more complicated than necessary; PHP hence doesn't require that such variables "exist" beforehand.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码