使用序列化键和值将多维数组转换为单个数组
Convert multidimensional array to single array with serialize key and value
这是我的多维数组。我想从中提取特定的 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
)
I WANT TO OUTPUT 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',
)
我是初学者,请以任何方式解决并格式化它。
在此先感谢您的帮助:)
$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 "</pre>";
}
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);
}
回声json_encode($FinL);
}
}
这是我的多维数组。我想从中提取特定的 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
)
I WANT TO OUTPUT 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',
)
我是初学者,请以任何方式解决并格式化它。
在此先感谢您的帮助:)
$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 "</pre>";
}
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);
}
回声json_encode($FinL); }
}