在PHP中重新排列数组[关闭]
问题描述:
I have an array which is multidimensional as given below:
Array
(
[fk_member_id] => 1
[f_name] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
)
[m_name] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
)
[l_name] => Array
(
[0] => Aagiwal
[1] => Aagiwal
[2] => Aagiwal
[3] => Aagiwal
[4] => Aagiwal
[5] => Aagiwal
)
[dob] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
)
[gender] => Array
(
[0] => Male
[1] => Male
[2] => Male
[3] => Male
[4] => Male
[5] => Male
)
[relation] => Array
(
[0] => Father
[1] => Father
[2] => Father
[3] => Father
[4] => Father
[5] => Father
)
[marital_status] => Array
(
[0] => Single
[1] => Single
[2] => Single
[3] => Single
[4] => Single
[5] => Single
)
[eduction] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
)
)
I am looking a way to rearrange this array as :
Array
(
[0] => Array
(
[f_name] =>
[m_name] =>
[l_name] => 'Agaliwal'
[dob] =>
[gender] => 'Male'
[relation] => 'Father'
[marital_status] =>
[education] =>
[fk_member_id] => 1
)
[1] => Array
(
[f_name] =>
[m_name] =>
[l_name] => 'Agaliwal'
[dob] =>
[gender] => 'Male'
[relation] => 'Father'
[marital_status] =>
[education] =>
[fk_member_id] => 1
)
[2] => Array
(
[f_name] =>
[m_name] =>
[l_name] => 'Agaliwal'
[dob] =>
[gender] => 'Male'
[relation] => 'Father'
[marital_status] =>
[education] =>
[fk_member_id] => 1
)
[3] => Array
(
[f_name] =>
[m_name] =>
[l_name] => 'Agaliwal'
[dob] =>
[gender] => 'Male'
[relation] => 'Father'
[marital_status] =>
[education] =>
[fk_member_id] => 1
)
[4] => Array
(
[f_name] =>
[m_name] =>
[l_name] => 'Agaliwal'
[dob] =>
[gender] => 'Male'
[relation] => 'Father'
[marital_status] =>
[education] =>
[fk_member_id] => 1
)
[5] => Array
(
[f_name] =>
[m_name] =>
[l_name] => 'Agaliwal'
[dob] =>
[gender] => 'Male'
[relation] => 'Father'
[marital_status] =>
[education] =>
[fk_member_id] => 1
)
)
答
You can just get the keys, then loop each key and shift each batch until it runs out. Example: Output
$new_values = array();
$fk_member_id = array_shift($values); // get the fk
$keys = array_keys($values); // get the keys
$count = count($values[$keys[0]]); // count columns
for($x = 0; $x < $count; $x++) {
$new_values[$x]['fk_member_id'] = $fk_member_id; // constant
foreach($keys as $k) {
$new_values[$x][$k] = array_shift($values[$k]); // shift each
}
}
echo '<pre>';
print_r($new_values);
答
Please take a look at the following answer:
Recursive array merge, group by key when multidimensionnal
A simple search brought these links and have answer for what you are looking for :)
答
You can try something like below....
$fk_member_id = $arr['fk_member_id']; unset($arr['fk_member_id']);
$newArr = array();
$count = count($arr['f_name']);
for($i = 0; $i < $count; $i++){
$temp = array();
foreach($arr as $k=>$v){
$temp[$k] = $v[$i];
}
$newArr[] = array_merge($temp, array('fk_member_id'=>$fk_member_id));
}
print '<pre>';
print_r($newArr);
print '</pre>';