С помощью инструкции на php

#php #with-statement

#php #with-statement

Вопрос:

Мне интересно, есть ли что-то похожее на with инструкцию javascript или VB, но в php

Способ, которым это работает, например, в VB, показан ниже. Два фрагмента кода дают одинаковый эффект:

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

равно :

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

Ответ №1:

Не совсем оператор with, но вы можете использовать ссылки в вашем примере:

 $r = amp;$array[index];

$r->attr1 = val1;
$r->attr2 = val2;
$r->attr3 = val3;
  

Комментарии:

1. @Hamish это нормально для синтаксиса: D значит, в php нет оператора with-like?

2. @DanyKhalife: Нет, такого не существует.

3. хм, облом, думаю, тогда я создам свой собственный : D спасибо, фарджад!

4. @DanyKhalife Нет, это не так, поскольку у нас нет этого на многих других языках. Это ухудшает читаемость, и люди могут использовать более значимые имена для ссылок на объекты для достижения той же функциональности. Если вы действительно хотите сократить вещи, Macros также полезны во многих случаях.

5. о да, я на самом деле посещаю курс, который подтверждает то, что вы только что сказали, но я не знал, что это with сделает вещи неясными, ну, по крайней мере, не для меня, но я пока не эксперт : D (не сделал проект из 10K строк : P) я тоже посмотрю это, спасибо

Ответ №2:

При необходимости с массивами, как в вашем примере, вы можете имитировать with statement , используя функцию array_merge:

 $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)