【问题标题】:With statement in php用php中的语句
【发布时间】:2011-11-13 02:29:17
【问题描述】:

我想知道是否有类似于 javascript 或 VB 的 with 语句但在 php 中的东西

它的工作方式(例如在 VB 中)如下所示。两个代码sn-ps做的效果一样:

array[index].attr1 = val1;
array[index].attr2 = val2;
array[index].attr3 = val3;

等于:

With(array[index])
    .attr1 = val1
    .attr2 = val2
    .attr3 = val3
End With

【问题讨论】:

    标签: php with-statement


    【解决方案1】:

    不完全是 with 语句,但您可以在示例中使用引用:

    $r = &$array[index];
    
    $r->attr1 = val1;
    $r->attr2 = val2;
    $r->attr3 = val3;
    

    【讨论】:

    • @Hamish 它的语法没问题 :D 所以 php 中没有 with-like-statement 吗?
    • @DanyKhalife:不,没有。
    • 嗯,真可惜,我想我会创建自己的 :D 感谢 fardjad!
    • @DanyKhalife 不,没有,因为我们在许多其他语言中都没有它。它损害了可读性,人们可以为对象引用使用更有意义的名称来实现相同的功能。如果您真的想缩短内容,Macros 在很多情况下也很有用。
    • 哦,是的,我实际上正在学习一门课程来证实你刚才所说的,但我不知道with 会让事情变得晦涩难懂,至少对我来说不是,但我还不是专家:D (还没有制作 10K+ 线项目:P)我也会查一下,谢谢
    【解决方案2】:

    如果需要在您的示例中使用数组,您可以使用 array_merge 函数来模仿 with statement

    $array = array(
        'index' =>  array(
                        'attr1' => 'val1',
                        'attr2' => 'val2',
                        'attr3' => 'val3'
                    )                
    );
    
    var_dump( $array );
    
    $array['index'] =   array_merge(
                            $array['index'],
                            array(
                                'attr1' => 'newval1',
                                'attr4' => 'newval4'
                            )
                        );
    
    var_dump( $array );
    

    输出:

    array
      'index' => 
        array
          'attr1' => string 'val1' (length=4)
          'attr2' => string 'val2' (length=4)
          'attr3' => string 'val3' (length=4)
    array
      'index' => 
        array
          'attr1' => string 'newval1' (length=7)
          'attr2' => string 'val2' (length=4)
          'attr3' => string 'val3' (length=4)
          'attr4' => string 'newval4' (length=7)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      相关资源
      最近更新 更多