Слияние массивов PHP - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть два массива данных:

array(2) {
  ["12:15"]=>
  string(84) "http://form.horseracing.betfair.com/horse-racing/010108/Catterick_Bridge-GB-Cat/1215"
  ["12:20"]=>
  string(77) "http://form.horseracing.betfair.com/horse-racing/010108/Southwell-GB-Sou/1220"
}

и

array(2) {
  ["12:15"]=>
  string(90) "http://www.racingpost.com/horses/result_home.sd?race_id=446323&r_date=2008-01-01&popup=yes"
  ["12:20"]=>
  string(90) "http://www.racingpost.com/horses/result_home.sd?race_id=446250&r_date=2008-01-01&popup=yes"
}

Я хочу объединить их, основываясь на времени, поэтому я получаю массив значений, в которых совпадают только времена в обоих массивах.

array(2) {
  ["12:15"]=>
  array(2) {
    [0]=>
    string(84) "http://form.horseracing.betfair.com/horse-racing/010108/Catterick_Bridge-GB-Cat/1215"
    [1]=>
    string(90) "http://www.racingpost.com/horses/result_home.sd?race_id=446323&r_date=2008-01-01&popup=yes"
  }
  ["12:20"]=>
  array(2) {
    [0]=>
    string(77) "http://form.horseracing.betfair.com/horse-racing/010108/Southwell-GB-Sou/1220"
    [1]=>
    string(90) "http://www.racingpost.com/horses/result_home.sd?race_id=446250&r_date=2008-01-01&popup=yes"
  }
}

Ответы [ 5 ]

2 голосов
/ 08 ноября 2010

Разве следующее не поможет?

$arr1 = array('time' => '14:00', 'rp' => 'blah');
$arr2 = array('time' => '14:00', 'bf' => 'yadda');

if ($arr1['time'] === $arr2['time']) {
    $mergedArray = array_merge($arr1, $arr2);
}
1 голос
/ 08 ноября 2010
$result = array();
foreach ($all_arrays as $a) {
  if (!isset($result[$a["time"]])) {
    $result[$a["time"]] = array();
  }
  $result[$a["time"]] = array_merge($result[$a["time"]], $a);
}
$result = array_values($result);
0 голосов
/ 08 ноября 2010

Используя комбинацию предлагаемых ответов и некоторого дополнительного Google Foo, решил это с помощью следующего:

$c = array_merge_recursive($a, $b);
0 голосов
/ 08 ноября 2010
$arr1 = array('time' => '14:00', 'rp' => 'blah');
$arr2 = array('time' => '14:00', 'bf' => 'yadda');
$arr3 = $arr1 + $arr2 ;

var_dump( $arr3 ) ;

дает

array
  'time' => string '14:00' (length=5)
  'rp' => string 'blah' (length=4)
  'bf' => string 'yadda' (length=5)
0 голосов
/ 08 ноября 2010

Я предполагаю, что у вас есть любое количество этих временных массивов.Вероятно, хорошей идеей будет хранить массив следующим образом:

$times = array(
   '14:00' => array(...),
   '15:00' => array(...),
   etc...
);


$temp = array();
foreach($time_arrays as $time_array) {
    if(isset($temp[$time_array['time'])) {
      $temp[$time_array['time'] = array_merge(temp[$time_array['time'], $time_array);
    }
    else {
      $temp[$time_array['time'] = $time_array;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...