我有一个示例代码。真奇怪!即使不对定义的数组进行任何更改,但我定义的数组的值仍然被更改。
class RegistrationForm(UserCreationForm):
username = forms.CharField(required=True, label='Username', widget=forms.TextInput(attrs={'class': 'class-one-input-fields'}))
password1 = forms.CharField(required=True, label='Password', widget=forms.PasswordInput(attrs={'class': 'class-one-input-fields'}))
password2 = forms.CharField(required=True, label='Password confirmation', widget=forms.PasswordInput(attrs={'class': 'class-one-input-fields'}))
pubpgp = forms.CharField(required=True, label='Public PGP Key', widget=forms.Textarea(attrs={'class': 'class-two-input-fields'}))
captcha = CaptchaField()
def save(self, commit=True):
username = super(RegistrationForm, self).save(commit=False)
username.pubpgp = self.cleaned_data['pubpgp']
if commit:
username.save()
return username
请您解释一下,它是怎么发生的?
答案 0 :(得分:2)
您确实要更改原始数组,因为在数组循环中使用了&
。
references的信号表示为@axiac注释。
为了避免对原始数组进行更改,请使用以下for循环:
foreach ($myarr as $myvalue)
答案 1 :(得分:0)
您正在传递myarr的地址,其中myvalue使用与myarr相同的地址,这就是为什么更改的原因
使用此
$myarr = array(1, 2, 3, 4);
foreach ($myarr as $myvalue) {
$myvalue = $myvalue * 2;
}
print_r($myarr);
答案 2 :(得分:0)
您是否尝试过在$ myvalue之前不使用“&”?