PHP忽略foreach on条件
我有一些记录行,如果它不是空的话,我想在foreach中迭代这些记录行 我的代码如下:PHP忽略foreach on条件,php,yii2,Php,Yii2,我有一些记录行,如果它不是空的话,我想在foreach中迭代这些记录行 我的代码如下: $count =2; if($count > 0){ foreach($userchild as $userchild){?> <?php } ?> //some html fields ?php if($count > 0){ } } 现在我使用$userchild作为userchild,而不是数组作为item 因此,当忽略e时,fore
$count =2;
if($count > 0){
foreach($userchild as $userchild){?>
<?php } ?>
//some html fields
?php
if($count > 0){
}
}
现在我使用$userchild作为userchild,而不是数组作为item
因此,当忽略e时,foreach默认值是来自controller的fieldnames中的$userchild。我认为您的PHP语法不正确。 请像这样试一试
$count =2;
if($count > 0){
foreach($userchild as $userchild){
<?php } ?>
//some html fields
<?php } ?>
您可以简单地使用所需代码的所有部分的适当回显,避免混合代码,例如:
<?php
$count =2;
if($count > 0){
foreach($userchild as $userchild){
echo '<div id="kids">
<div class="r-group">
<div class="form-group form-material"> ';
echo $form->field($userchild, '['.$id.']'.'child_name')
->textInput( ['placeholder' => 'Kids Name','class' => 'col-sm-4',
'data-pattern-name' => 'UserChildren[++][child_name]',
'data-pattern-id' => 'userchildren-child_name-++'])->label(FALSE);
echo $form->field($userchild, '['.$id.']'.'child_birth_date')
->textInput( ['placeholder' => 'Kids Birth Date', 'class' => 'col-sm-4',
'data-pattern-name' => 'UserChildren[++][child_birth_date]',
'data-pattern-id' => 'userchildren-child_birth_date-++'])->label(FALSE);
echo $form->field($userchild, '['.$id.']'.'child_gender')
->textInput( ['placeholder' => 'Kids Gender', 'class' => 'col-sm-4',
'data-pattern-name' => 'UserChildren[++][child_gender]',
'data-pattern-id' => 'userchildren-child_gender-++'])->label(FALSE);
echo '</div>
</div>';
} // end foreach
} // end if($count > 0){
?>
您可以使用一个查询:
有什么错误?php是一个输入错误,但不应该导致错误。。。或者更仔细地看。。。您正试图将数组用作字符串$userchild as$userchild。是否要重新格式化代码?还有,为什么不使用foreach:和endforeach;?更具可读性..您可能在$userchild值中得到null。可以在foreach之前添加check条件,比如count$userchild,然后像ewisec一样,您可以发布真实代码的最低版本,以及示例数据,以便我们可以复制吗?您不能使PHP代码本身具有条件。你想要的是如果。。。{foreach…{…}};i、 只要把整个foreach。。。{…}块插入if。。。{…}块,而不是单独的开始和结束语句。您认为OP有什么语法问题?如果我没有在结束大括号上设置条件,并且计数为0,它将为文件的不正确结尾生成错误。实际上,当我在条件下处理整个块时,它是有效的。谢谢你的建议。@Joshi.如果我的回答是正确的。。或者引导您找到正确的解决方案。。你应该把它标记为已接受。我还有一些其他问题。你能看看这里吗-
public function actionUpdateProfile() {
$user_id = Yii::$app->user->identity->id;
$model = User::find()->where(['id' => $user_id])->one();
$UserProfile = UserProfile::find()->where(['user_id' => $model->id])->one();
$userbillinginfo = UserBillingInfo::find()->where(['user_id' => $model->id])->one();
$userchildren = UserChildren::find()->where(['user_id' => $model->id])->all();
//var_dump($userchildren);
if($userchildren){
$profile = $UserProfile;
$billinginfo= $userbillinginfo;
$userchild = $userchildren;
}
else {
$profile = new UserProfile;
$profile->user_id = $model->id;
$billinginfo = new UserBillingInfo;
$billinginfo->user_id = $model->id;
$userchild = New UserChildren;
$userchild->user_id = $model->id;
}
if (Yii::$app->request->isAjax && $model->load($_POST)) {
Yii::$app->response->format = 'json';
return \yii\bootstrap\ActiveForm::validate($model);
}
if (Yii::$app->request->isAjax && $profile->load($_POST)) {
Yii::$app->response->format = 'json';
return \yii\bootstrap\ActiveForm::validate($profile);
}
if (Yii::$app->request->isAjax && $billinginfo->load($_POST)) {
Yii::$app->response->format = 'json';
return \yii\bootstrap\ActiveForm::validate($billinginfo);
}
if (Yii::$app->request->isAjax && $userchild->load($_POST)) {
Yii::$app->response->format = 'json';
return \yii\bootstrap\ActiveForm::validate($userchild);
}
if ($model->load(Yii::$app->request->post()) && $profile->load(Yii::$app->request->post()) && $billinginfo->load(Yii::$app->request->post()) ) {
//UserChildren::deleteAll('user_id = '. $model->id);
$model->username = $model->email;
$model->save();
$profile->save();
$billinginfo->save();
if (!empty($_POST['UserChildren']) && !is_null($_POST['UserChildren'])) {
foreach($_POST['UserChildren'] as $rows){
$userchild = New UserChildren;
Yii::$app->db->createCommand()->update('user_children', ['child_name' => $rows['child_name'],'child_birth_date' =>$rows['child_birth_date'],'child_gender' =>$rows['child_gender']])->execute();
$userchild->user_id = $model->id;
$userchild->attributes=$rows;
$userchild->save();
}
}
return $this->redirect(['view']);
} else {
return $this->render('update-profile', [
'model' => $model,
'profile' => $profile,
'billinginfo' => $billinginfo,
'userchild' => $userchild,
]);
}
}
$count =2;
if($count > 0){
foreach($userchild as $userchild){
<?php } ?>
//some html fields
<?php } ?>
<?php
$count =2;
if($count > 0){
foreach($userchild as $userchild){
echo '<div id="kids">
<div class="r-group">
<div class="form-group form-material"> ';
echo $form->field($userchild, '['.$id.']'.'child_name')
->textInput( ['placeholder' => 'Kids Name','class' => 'col-sm-4',
'data-pattern-name' => 'UserChildren[++][child_name]',
'data-pattern-id' => 'userchildren-child_name-++'])->label(FALSE);
echo $form->field($userchild, '['.$id.']'.'child_birth_date')
->textInput( ['placeholder' => 'Kids Birth Date', 'class' => 'col-sm-4',
'data-pattern-name' => 'UserChildren[++][child_birth_date]',
'data-pattern-id' => 'userchildren-child_birth_date-++'])->label(FALSE);
echo $form->field($userchild, '['.$id.']'.'child_gender')
->textInput( ['placeholder' => 'Kids Gender', 'class' => 'col-sm-4',
'data-pattern-name' => 'UserChildren[++][child_gender]',
'data-pattern-id' => 'userchildren-child_gender-++'])->label(FALSE);
echo '</div>
</div>';
} // end foreach
} // end if($count > 0){
?>
$model = User::find()->with(['userprofile','userbillinginfo','userchildren'])->where(['id' => $user_id])->one();
if(isset($model->userchildren)) {
foreach($model->userchildren as $child) {
....
}
}