объединение одиночного и многомерного массива в переполнении стека

одномерный массив

$arr1 = array(3) {
["Gold"]=> "170"["Diamond"]=> "301"["Platinum"]=>  "302"}

многомерный массив

$arr2 = array(3) {

[0]=>
array(2) {
["ID"]=> "p103"["PID"]=> "301"}

[1]=>
array(2) {
["ID"]=> "p104"["PID"]=> "302"}

[2]=>
array(2) {
["ID"]=> "p105"["PID"]=> "300"}
}

И пересечение может быть,

array(2) {

[0]=>
array(2) {
["ID"]=> "301"["PID"]=> "Diamond"}

[1]=>
array(2) {
["ID"]=> "302"["PID"]=> "Platinum"}
}

Я пробовал использовать php array_intersect(),
$Data = array_intersect_assoc($arr1,$arr2);
но чего-то не хватало.
Любые предложения и помощь могут быть оценены. Спасибо

-1

Решение

Вы можете просто выполнить цикл и присвоить соответствующее значение полю PID.

$array1 = array(
"Gold" => "170",
"Diamond" => "301",
"Platinum" => "302");

$array2 = array(
array(
"ID" => "p103",
"PID" => "301"),
array(
"ID" => "p104",
"PID" => "302"),
array(
"ID" => "p105",
"PID" => "300")
);

$array1 = array_flip($array1);  // Flipping first array so that we can directly use the values Gold, Diamond corresponding to 301, 301 ...

foreach ($array2 as $k => &$arr) {
/*
* If value exists in array 1 then assign it to PID
* Otherwise, unset this array key
*/
if (isset($array1[$arr['PID']])) {
$arr['PID'] = $array1[$arr['PID']];
} else {
unset($array2[$k]);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector