Here is my multidimensional array. I want to extract specific fields
from them and create a consolidated array.
$array = [
['in_user_id' => 157, 'st_meta_key' => 'city', 'st_meta_value' => 'jaipur'],
['in_user_id' => 157, 'st_meta_key' => 'latitude'],
['in_user_id' => 157, 'st_meta_key' => 'longitude'],
['in_user_id' => 203, 'st_meta_key' => 'city', 'st_meta_value' => 'Jaipur'],
['in_user_id' => 203, 'st_meta_key' => 'latitude', 'st_meta_value' => '26.8517972'],
['in_user_id' => 203, 'st_meta_key' => 'longitude', 'st_meta_value' => '75.7862232'],
['in_user_id' => 214, 'st_meta_key' => 'city', 'st_meta_value' => 'Jaipur'],
['in_user_id' => 214, 'st_meta_key' => 'latitude', 'st_meta_value' => '26.8517972'],
['in_user_id' => 214, 'st_meta_key' => 'longitude', 'st_meta_value' => '75.7862232']
];
I want something like this:
Array(
[id] => 157,
[city] => jaipur,
[latitude] => '',
[longitude] => '',
[id] => 203,
[city] => Jaipur,
[latitude] => '26.8517972',
[longitude] => '75.7862232',
[id] => 214,
[city] => Jaipur,
[latitude] => '26.8517972',
[longitude] => '75.7862232',
)
foreach ($run as $childArray)
{
if($childArray['st_meta_key'] == 'city'){
$fin[$i] = array(
'id' => $childArray['in_user_id'],
'city' => $childArray['st_meta_value'],
);
}
if($childArray['st_meta_key'] == 'latitude'){
$fin[$i] = array(
'id' => $childArray['in_user_id'],
'latitude' => $childArray['st_meta_value'],
);
}
if($childArray['st_meta_key'] == 'longitude'){
$fin[$i] = array(
'id' => $childArray['in_user_id'],
'longitude' => $childArray['st_meta_value'],
);
}
if($childArray['st_meta_key'] == 'address'){
$fin[$i] = array(
'id' => $childArray['in_user_id'],
'address' => $childArray['st_meta_value'],
);
}
$i++;
}
$arryc = 0;
foreach($fin as $key => $val){
if(is_array($val)){
foreach($val as $k => $v){
if($k == 'id' && $k == $k) {
//$singleDimArray['id'] = $val['id'];
if(!empty($val['city'])){
$singleDimArray[$arryc]['id'] = $val['id'];
$singleDimArray[$arryc]['city'] = $val['city'];
}
if(!empty($val['address'])){
$singleDimArray[$arryc]['id'] = $val['id'];
$singleDimArray[$arryc]['address'] = $val['address'];
}
if(!empty($val['latitude'])){
$singleDimArray[$arryc]['id'] = $val['id'];
$singleDimArray[$arryc]['latitude'] = $val['latitude'];
}
if(!empty($val['longitude'])){
$singleDimArray[$arryc]['id'] = $val['id'];
$singleDimArray[$arryc]['longitude'] = $val['longitude'];
}
}
$arryc++;
}
}
}
$arraysMerged = [];
$newarray=[];
foreach($singleDimArray as $x){
$arraysMerged = array_merge($arraysMerged, $x);
$newarray[$x['id']][]=$arraysMerged;
}
$FinL= array();
foreach($newarray as $val){
// print_r($newarray);
$FinL[]= end($val);
}
echo json_encode($FinL); }
}