карта массива — php | замена array_map

Я ищу способ заменить мой массив.
Мой первый массив ниже:

$arr1 = Array
(
[0] => stdClass Object
(
[values] => Array
(
[0] => stdClass Object
(
[field_value] => Green
[count] => 0
)

[1] => stdClass Object
(
[field_value] => Red
[count] => 0
)
)

)
[1] => stdClass Object
(
[values] => Array
(
[0] => stdClass Object
(
[field_value] => Plastic
[count] => 0
)

[1] => stdClass Object
(
[field_value] => Metall
[count] => 0
)
)

)

Мой второй массив:

$arr2 = Array
(
[0] => 2
[1] => 6
[2] => 3
[3] => 4
)

И я хотел бы получить это:

Array
(
[0] => stdClass Object
(
[values] => Array
(
[0] => stdClass Object
(
[field_value] => Green
[count] => 2
)

[1] => stdClass Object
(
[field_value] => Red
[count] => 6
)
)

)
[1] => stdClass Object
(
[values] => Array
(
[0] => stdClass Object
(
[field_value] => Plastic
[count] => 3
)

[1] => stdClass Object
(
[field_value] => Metall
[count] => 4
)
)

)

Я пытался использовать функцию array_map, но безуспешно.

array_map(function($a,$b){$a = $b; return $a;}, $arr1, $arr2);

Спасибо!

2

Решение

Прекратите писать цикл foreach, используйте array_map:

http://www.namasteui.com/array_map-stop-writing-foreach-cycles/

1

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

$array=$arr[0]->values;
$new_array=array();

foreach($array as $key=>$val)
{
$new_array[$key]=$val;
$new_array[$key]->count=$arr2[$key];

}


$result=array();
$result[0]->values=$new_array;
0

При необходимости создайте свою собственную функцию и настройте ее по своему усмотрению, см. Пример ниже:

function buildMyArray($array1, $array2)
{

foreach($array1[0]->values as $key => $value){
$array1[0]->values[$key]['count'] = $array2[$key];
}

return $array1;
}

и вы можете назвать это как:

$result = buildMyArray($arr1, $arr2);
0

Если вы хотите использовать array_mapтогда что-то должно быть как ниже:

$arr1[0]->values = array_map(function($v, $k) use ($arr2)  {
// if not found in $arr2, remain the original value.
$v->count = isset($arr2[$k]) ? $arr2[$k] : $v->count;
return $v;
}, $arr1[0]->values, array_keys($arr1[0]->values));
0
По вопросам рекламы [email protected]