Atualize a metadela do usuário usando foreach

Eu tenho dois arrays consistindo de chaves e valores:

Array consistindo de meta-chaves:

$user_meta_fields = array ( 'first_name', 'last_name', 'job_title', 'college', 'street_address','address_line2','city','state','country', 'zip', 'phone', 'email' ); 

Array consistindo em valores:

 $post_data['fname'] = $_POST['fname']; $post_data['lname'] = $_POST['lname']; $post_data['job_title'] = $_POST['job_title']; $post_data['college'] = $_POST['college']; $post_data['street_address'] = $_POST['street_address']; $post_data['address_line2'] = $_POST['address_line2']; $post_data['city'] = $_POST['city']; $post_data['state'] = $_POST['state']; $post_data['country'] = $_POST['country']; $post_data['zip'] = $_POST['zip']; $post_data['phone'] = $_POST['phone']; $post_data['email'] = $_POST['email']; 

Aqui está o meu loop:

 foreach($user_meta_fields as $user_meta_field){ update_user_meta($current_user->ID, $user_meta_field, $post_data); } 

Mas isso não funciona para mim. Por quê?

Solutions Collecting From Web of "Atualize a metadela do usuário usando foreach"

Certifique-se de ter chaves idênticas em ambos os arrays. Keys ‘first_name’, ‘last_name’ e respectivas chaves ‘fname’, ‘lname’ são diferentes. Se você pode torná-los idênticos, primeiro faça isso, caso contrário, você precisará fazer manipulação de seqüência dessas chaves antes de usá-las ou colocar uma condição como abaixo no loop foreach –

 foreach($user_meta_fields as $user_meta_field){ if ($user_meta_field == 'first_name'){ update_user_meta($current_user->ID, $user_meta_field, $post_data['fname']); } else if ($user_meta_field == 'last_name'){ update_user_meta($current_user->ID, $user_meta_field, $post_data['lname']); } else{ update_user_meta($current_user->ID, $user_meta_field, $post_data[$user_meta_field]); } } 

Caso contrário, se todas as chaves forem feitas de forma idêntica, então a solução genérica –

 foreach($user_meta_fields as $user_meta_field){ update_user_meta($current_user->ID, $user_meta_field, $post_data[$user_meta_field]); }