zoukankan      html  css  js  c++  java
  • Strict Standards: Only variables should be passed by reference

    <?php
    $tag="1 2 3 4 5 6 7";
    $tag_sel = array_shift(explode(' ', $tag));
    print_r($tag_sel);

    报错:
    Strict Standards: Only variables should be passed by reference in E:workphpcomyinyong.php on line 3

    关于引用传递(摘自手册)

    可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。语法如下:

    <?php
    function foo (& $var )
    {
    $var ++;
    }

    $a = 5 ;
    foo ( $a );
    // $a is 6 here
    ?>

    注意在函数调用时没有引用符号——只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。在最近版本的 PHP 中如果把 & 用在 foo(&$a);中会得到一条警告说“Call-time pass-by-reference”已经过时了。

    以下内容可以通过引用传递:

    • 变量,例如 foo($a)
    • New 语句,例如 foo(new foobar())
    • 从函数中返回的引用,例如:

      <?php
      function & bar ()
      {
      $a = 5 ;
      return $a ;
      }
      foo ( bar ());
      ?>
      详细解释见引用返回

    任何其它表达式都不能通过引用传递,结果未定义。例如下面引用传递的例子是无效的:

    <?php
    function foo (& $var )
    {
    $var ++;
    }
    function bar () // Note the missing &
    {
    $a = 5 ;
    return $a ;
    }
    foo ( bar ()); // 自 PHP 5.0.5 起导致致命错误,自 PHP 5.1.1 起导致严格模式错误
    // 自 PHP 7.0 起导致 notice 信息
    foo ( $a = 5 ) // 表达式,不是变量
    foo ( 5 ) // 导致致命错误
    ?>

    这些条件是 PHP 4.0.4 以及以后版本有的。

    以上是手册内容,再看代码中用的函数:

    array_shift — 将数组开头的单元移出数组

    说明

    mixed array_shift ( array &$array )注意:这里的参数$array需要是一个变量/new 语句/函数返回的引用,单纯的函数返回值不可以

    array_shift()array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。

    Note: 使用此函数后会重置( reset() array 指针。

  • 相关阅读:
    腾讯会议API接入
    解决远程调用三方接口:javax.net.ssl.SSLHandshakeException报错
    iOS自动创建本地化文件
    数组转换
    2021MongoDB技术实践与应用案例征集活动获奖通知
    MongoDB按需物化视图介绍
    参会指南 | 2021MongoDB南京技术沙龙
    叮咚买菜自建MongoDB上云实践
    MongoDB技术实践与应用案例征集中
    使用WT工具恢复MongoDB数据
  • 原文地址:https://www.cnblogs.com/ch459742906/p/6026421.html
Copyright © 2011-2022 走看看