2013-11-20 36 views
0

在整个数组上移动之前,我需要将一些函数应用于数组中的某个关键项,但我可能会错过某些东西。
这里是我的代码:在处理它们之前更新POST数据的PHP数组

// Get generated datas 
$data_post = $this->input->post('form_data'); // Need to update this array 

foreach($data_post as $data){ 
    $data['password'] = password_encrypt($data['password']); 
    var_dump($data); // Password encryption succeed 
} 

var_dump($data_post); // But here, the password is still the same, no encryption applied 

所以在代码段评论,我应该如何更新主$data_post阵列与foreach()所做的修改?

回答

5

里面一个foreach,数据不通过引用传递。这意味着修改变量$data不会修改$data_post。您可以修改的方法不止一种原始数组,但这里是我会怎么做:

foreach($data_post as $key => $data){ 
    $data_post[$key]['password'] = password_encrypt($data['password']); 
} 

注意,这假定$data_post包含多个子阵列,每个阵列与password键(或者通知将抛出)。

+0

完美!谢谢弗拉德。 – aspirinemaga

0

试试这个:

$data_post = $this->input->post('form_data'); // Need to update this array 


foreach($data_post as $k=>$v){ 
     if($k == "password"){ 
      $data_post[$k] = password_encrypt($v); 
     } 
} 

var_dump($data_post);