2015-06-09 3 views
2

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

$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); 

Спасибо!

ответ

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=$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

Пожалуйста, добавьте некоторые пояснения к вашему ответу. – kenorb

+0

Да. К сожалению, это не работает должным образом. – user889349

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

Здравствуйте, Благодарим вас за помощь. Мои данные о доходе немного изменились. Можно ли изменить код? – user889349

Смежные вопросы