Преобразование многомерного массива в один массив с сериализацией ключа и значения - PullRequest
0 голосов
/ 04 февраля 2020

Вот мой многомерный массив. Я хочу извлечь из них указанные c fields и создать одномерный массив.

   [0] => Array (
        [in_user_id] => 157,
        [st_meta_key] => city
        [st_meta_value] => jaipur
        )
    [1] => Array (
        [in_user_id] => 157
        [st_meta_key] => latitude
        )
    [2] => Array (
        [in_user_id] => 157
        [st_meta_key] => longitude
        )
    [3] => Array (
        [in_user_id] => 203
        [st_meta_key] => city
        [st_meta_value] => Jaipur
        )
    [4] => Array (
        [in_user_id] => 203
        [st_meta_key] => latitude
        [st_meta_value] => 26.8517972
        )
    [5] => Array (
        [in_user_id] => 203
        [st_meta_key] => longitude
        [st_meta_value] => 75.7862232
        )
    [6] => Array (
        [in_user_id] => 214
        [st_meta_key] => city
        [st_meta_value] => Jaipur
        )
    [7] => Array (
        [in_user_id] => 214
        [st_meta_key] => latitude
        [st_meta_value] => 26.8517972
        )
    [8] => Array (
        [in_user_id] => 214
        [st_meta_key] => longitude
        [st_meta_value] => 75.7862232
        )

Я ХОЧУ ВЫВОДИТЬ, КАК ЭТОТ

    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',
     )

Пожалуйста, помогите мне решить любой вопрос и отформатируйте его, как я начинающий.

Заранее спасибо за помощь:)

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020
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); }

}
0 голосов
/ 05 февраля 2020
<code>    $size = count($cars);//the array name 



for($i=0; $i<$size; $i++)
{

    $keyid= $cars[$i]['in_user_id'];
    $keyid1=$cars[$i++]['in_user_id'];
    //$keycity=$cars[$i]['st_meta_key']; echo "<br>";
    //$keylatitute=$cars[$i]['st_meta_value'];
    //echo $keyid. "<br>";
    if($keyid==$keyid1)
    {
        $j=$i+1;
        $first[] = array(

            'id' => $cars[$i]['in_user_id'],
            $cars[$i]["st_meta_key"]=>$cars[$i]['st_meta_value'],
            $cars[$j]["st_meta_key"]=>$cars[$j]['st_meta_value'],

         );
    }

}

$finalcount=count($first);

for ($k=0; $k <$finalcount ; $k++) { 


echo "<pre>";
print_r($first[$k]);
echo "
";}
...