Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP忽略foreach on条件_Php_Yii2 - Fatal编程技术网

PHP忽略foreach on条件

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

我有一些记录行,如果它不是空的话,我想在foreach中迭代这些记录行

我的代码如下:

$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) {
       ....
   }
 }