【问题标题】:Foreach loops and referencesForeach 循环和引用
【发布时间】:2014-02-04 15:08:03
【问题描述】:

在以下循环中:

foreach( $email_field_arrays as $key => $array_of_emails ) {
    if( ! empty( $array_of_emails ) ){
        foreach( $array_of_emails as $i => $email ) {
            $sanitized_email = sanitize_email( trim( $email ) );
            $email_field_arrays[$key][$i] = $sanitized_email;
        }
    }
}

如何使用 '&$...' 引用运算符,这样我就不必包含这一行:

$email_field_arrays[$key][$i] = $sanitized_email;

更新数组中的值?

我在互联网上搜索了引用的工作原理,但我似乎无法理解它们,而不是在循环或函数参数的上下文中。

我意识到这个问题与 WordPress 没有明确的关系,但我相信我可能是唯一一个一直在走“长路”来实现数组数据卫生的人,而且他们的代码也可以改进。

非常感谢

【问题讨论】:

    标签: php reference foreach


    【解决方案1】:

    您想了解reference operator [&]:

    foreach( $email_field_arrays as $key => &$array_of_emails ) {
        if( ! empty( $array_of_emails ) ){
            foreach( $array_of_emails as $i => &$email ) {
                $email = sanitize_email( trim( $email ) );
            }
        }
    }
    

    一般来说:

    foreach($array as $key => &$value){
    
      $value = someFunction();
    
    }
    

    现在$array 中的每个$value 都将更新到位。

    【讨论】:

    • 顺便说一句。在可能的情况下使用或不使用参考运算符是否存在许多性能损失?
    • 是的,您需要尽快去看眼科医生 :)) 开玩笑,这更多的是可维护性而不是性能问题,因为引用意味着您正在处理本机/数组类型而不是对象[默认情况下通过引用传递],后者是您现在应该选择的架构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 2019-09-19
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多