我想用特定的键将一个数组的值移到另一个数组,例如以下是我的第一个数组。
firstArray
(
[0] => Array
(
[id] => 863
[flag] => 2
[qty] => 2
[size] => 8
)
[1] => Array
(
[id] => 861
[flag] => 2
[qty] => 2
[size] => 8
)
)
然后是我的第二个数组
TwoArray
(
[863] => Bead Headed Prince Nymphs size 18
[861] => Bead Headed Prince Nymphs size 14
)
我想要具有组合值的数组
mainarray(
[0] => Array
(
[id] => 863
[flag] => 2
[qty] => 2
[size] => 8
[name] =>Bead Headed Prince Nymphs size 18
)
[1] => Array
(
[id] => 861
[flag] => 2
[qty] => 2
[size] => 8
[name] => Bead Headed Prince Nymphs size 14
)
)
我使用以下代码,但无法获得所需的输出。
$getResult = $wpdb->get_results("SELECT *FROM tablename");
if(isset($getResult) && !empty($getResult)){
foreach($getResult as $val){
$data = $val->fliesfromuser;
$fliesFromStore = json_decode($val->fliesid_in_store,true);
@$result = call_user_func_array('array_merge', $fliesFromStore);
echo "<pre>first";
print_r ($fliesFromStore);
echo "</pre>";
$postIds = array_column($fliesFromStore, 'id');
$args = array(
'post__in' =>$postIds,
'post_type' =>'product'
);
$getStorePosts = get_posts($args);
$postTitle = array_column($getStorePosts, 'post_title','ID');
echo "<pre>Two";
print_r ($postTitle);
echo "</pre>";
$test = array_merge($fliesFromStore,$postTitle);
echo "<pre>";
print_r ($test);
echo "</pre>";
die();
}
}
如果有人知道我的代码做错了什么,请对此提供帮助。
答案 0 :(得分:3)
如果使第一个数组具有关联性,那么这是一个简单的foreach循环。
您可以使用array_column将firstarray关联起来。
// Make firstarray associative
$firstarray = array_column($firstarray, NULL,"id");
foreach($twoarray as $key => $val){
$firstarray[$key]['name'] = $val;
}
var_dump($firstarray);
请注意firstarray是关联的,要删除关联,可以根据需要使用array_values。
编辑:请记住,此代码假定第二个数组中的键位于第一个数组中。
如果不存在,它将在第一个数组中仅使用“名称”创建一个新项目。
您可以使用isset()首先确保$ key存在于firstarray中。
foreach($twoarray as $key => $val){
if(isset($firstarray[$key])) $firstarray[$key]['name'] = $val;
}
答案 1 :(得分:1)
与@Andreas的回答略有不同的版本:
它仍然使用快速的foreach循环将正确的数组值合并在一起,而无需使用关联数组。
$fliesFromStore = array(
array(
'id' => 863,
'flag' => 2,
'qty' => 2,
'size' => 8
),
array(
'id' => 861,
'flag' => 2,
'qty' => 2,
'size' => 8
),
);
$postTitles = array(
863 => 'Bead Headed Prince Nymphs size 18',
861 => 'Bead Headed Prince Nymphs size 14'
);
foreach ($fliesFromStore as $key => $fly) {
$fliesFromStore[$key]['name'] = $postTitles[$fly['id']];
}
var_dump($fliesFromStore);
这将输出:
Array
(
[0] => Array
(
[id] => 863
[flag] => 2
[qty] => 2
[size] => 8
[name] => Bead Headed Prince Nymphs size 18
)
[1] => Array
(
[id] => 861
[flag] => 2
[qty] => 2
[size] => 8
[name] => Bead Headed Prince Nymphs size 14
)
)
这是一个正在运行的示例:https://eval.in/1035247
答案 2 :(得分:1)
从上面更快的轻微变化可能是
<?php
$array1[] = [ 'id'=>863, 'flag'=>2, 'qty'=>2, 'size'=>8 ];
$array1[] = [ 'id'=>861, 'flag'=>2, 'qty'=>2, 'size'=>8 ];
$array2[863] = 'Bead Headed Prince Nymphs size 18';
$array2[861] = 'Bead Headed Prince Nymphs size 19';
foreach( $array1 as &$arr1 ) {
$arr1['value'] = $array2[$arr1['id']];
}
print_r($array1);
?>