这是我的多维数组。我想从中提取特定的
fields
并创建一个合并数组。
$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']
];
我想要这样的东西:
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); }
}
迭代每一行,使用 user_id 值作为第一级分组键,并将关联元素推入第二级。 如果没有值,则使用空合并运算符回退到空字符串。
代码:(演示)
$result = [];
foreach ($array as $row) {
$result[$row['in_user_id']][$row['st_meta_key']] = $row['st_meta_value'] ?? '';
}
var_export($result);
输出:
array (
157 =>
array (
'city' => 'jaipur',
'latitude' => '',
'longitude' => '',
),
203 =>
array (
'city' => 'Jaipur',
'latitude' => '26.8517972',
'longitude' => '75.7862232',
),
214 =>
array (
'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>";
}