使用foreach cakephp

时间:2016-02-26 21:52:16

标签: php cakephp foreach

我正在使用cakephp为每个数据保存多个数据。 我已经在会话中保存数据它工作正常。 但是我在foreach循环中遇到了麻烦。 这是Controller保存多个数据:

 foreach($currentSessionData as $key):
                   // debug($key);
                    $this->request->data[$table_name]['tutor_name'] = $key['tutor_name'];
                    $this->request->data[$table_name]['area_id'] = $key['area_id'];

                    $this->$table_name->save($this->request->data);
                    endforeach;

当我调试$ currentSessionData时,我得到的数组如下:

array(
'application_attachment' => '',
'desc' => '',
'Post' => array(
    'tutor_name' => 'Muhammad Usman',
    'tutor_email' => 'usman@gmail.com',
    'tutor_number' => '123123',
    'tutor_gender' => 'male',
    'city_id' => '2',
    'tutor_address' => 'asdasdas',
    'area_id' => array(
        (int) 0 => '3',
        (int) 1 => '4'
    ),
    'user_id' => '47'
)

) debug($ key)return:

array(
'tutor_name' => 'Muhammad Usman',
'tutor_email' => 'usman@gmail.com',
'tutor_number' => '123123',
'tutor_gender' => 'male',
'city_id' => '2',
'tutor_address' => 'asdasdas',
'area_id' => array(
    (int) 0 => '3',
    (int) 1 => '4'
),
'user_id' => '47'

) 当我写作

 $this->request->data[$table_name]['tutor_name'] = $key['tutor_name'];
 $this->request->data[$table_name]['area_id'] = $key['area_id'];

它给出了非法字符串偏移的错误。

如果我只是保存$ key,如:

 foreach($currentSessionData as $key):
                    $this->$table_name->save($key);
                    endforeach;

                $this->Session->setFlash('Account created!');

它给出错误:  数组到字符串转换[CORE \ Cake \ Model \ Datasource \ DboSource.php,第1009行]

还有为什么foreach不会迭代' 0'指数。 任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

foreach($currentSessionData as $k=>$v):
        if ($k === 'Post') {
            $this->request->data[$table_name]['tutor_name'] = $v['tutor_name'];

            for($i=0;$i<count($v['area_id']);$i++){

                $this->request->data[$table_name]['area_id'] = $v['area_id'][$i];
                $this->$table_name->save($this->request->data);
            }

        }

    endforeach;

但是在area_id中你还有另一个数组,你需要决定你需要保留哪个值。另请阅读有关数组的更多信息。

答案 1 :(得分:0)

你可以试试这个。

foreach($currentSessionData as $key):             
    $this->request->data[$table_name]['tutor_name'] = $key['Post']['tutor_name'];
    $this->request->data[$table_name]['area_id'] = $key['Post']['area_id'][$i]; //$i= 0 or 1 ( only or your given array)
    $this->$table_name->save($this->request->data);
endforeach;