как совместить массивы на похожем ключе в php? - PullRequest
0 голосов
/ 14 декабря 2011

у меня такая ситуация $test:

               $months = Array
                    (
                        [3] => 7.56
                        [7] => 11.94
                        [1] => 6.90
                        [17] => 6.90
                        [6] => 6.90
                        [4] => 19.50
                    )
               $total = Array
                    (
                        [31] => 10
                        [17] => 4
                    )

Я хотел бы объединить их так, чтобы я получил $x = array([17] => 6.90)

в основном составляет values от $months и keys от $total, где $months.key = $total.key

есть идеи?

спасибо

Ответы [ 4 ]

2 голосов
/ 14 декабря 2011

Вы должны попробовать array_intersect_keys ( doc )

Из документа:

<?php
    $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
    $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

    var_dump(array_intersect_key($array1, $array2));
?>

output

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

"array_intersect_key () возвращаетмассив, содержащий все записи в массиве array1, у которых есть ключи, присутствующие во всех аргументах. "

Так что, если вам всегда нужны" значения "первого массива, это решение.

1 голос
/ 14 декабря 2011
$x = array();
foreach($total as $key => $value)
{
  if (array_key_exists($key, $months))
  {
    $x[$key] = $months[$key];
  }
}
0 голосов
/ 14 декабря 2011

Если я не ошибаюсь, это может быть работа по слиянию массивов.

$x = array_merge($months,$total);

http://php.net/manual/en/function.array-merge.php

0 голосов
/ 14 декабря 2011
foreach ($total as $k => $v) if (isset($months[$k])) $x[$k] = $months[$k];
...