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