объединяя массивы, сохраняя другое значение, выберите один, если он одинаковый.с php - PullRequest
1 голос
/ 30 июля 2011

скажем, от нуля до более важного уровня значения

  # very imporant
  0 =>
    array
      'index' => string 'helloworld:Index' (length=16)
      404 => string 'helloworld:Missinga' (length=19)
      503 => string 'helloworld:Offline' (length=18)
      'nojs' => string 'helloworld:Nojs' (length=15)
      'blog' => string 'helloworld:blog' (length=15)
  # important
  1 => 
    array
      'index' => string 'helloworld:Index' (length=16)
      404 => string 'helloworld:Missingb' (length=19)
      503 => string 'helloworld:Offline' (length=18)
      'nojs' => string 'helloworld:Nojs' (length=15)
      'blogb' => string 'helloworld:blog' (length=15)
  # not that important
  2 => 
    array
      'index' => string 'helloworld:Index' (length=16)
      404 => string 'helloworld:Missingc' (length=19)
      503 => string 'helloworld:Offline' (length=18)
      'nojs' => string 'helloworld:Nojs' (length=15)
       'more' => string 'helloworld:Nojs' (length=15)
  # so on

объединить их в один массив к чему-то вроде этого

    array
      'index' => string 'helloworld:Index' (length=16) # from 0 ( others same key )
      404 => string 'helloworld:Missinga' (length=19)  # from 0 ( others same key )
      503 => string 'helloworld:Offline' (length=18)   # from 0 ( others same key )
      'nojs' => string 'helloworld:Nojs' (length=15)   # from 0 ( others same key )
      'blog' => string 'helloworld:blog' (length=15)   # from 0 ( new )
      'blogb' => string 'helloworld:blog' (length=15)  # from 1 ( new )
      'more' => string 'helloworld:Nojs' (length=15)   # from 2 ( new )
  1. когда ключ другой = добавить
  2. когда ключ тот же = проверить важный уровень, получить один высший уровень

вопрос как лучше всего объединить несколько в массив, но как-то так?

спасибо, что заглянули в

Адам Рамадан

Ответы [ 3 ]

3 голосов
/ 30 июля 2011

Вы можете сделать это

$array1 + $array2 + array3;

В отличие от array_merge(), на первом месте стоит тот, который важнее всего, и уважаются цифровые клавиши.

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

$result = array();
foreach ($array as $value) { $result += $value; }
1 голос
/ 30 июля 2011
$new_array = array();

 foreach($old_array as $level => $key_array) {
   foreach($key_array as $key => $value) {
     if(!isset($new_array[$key])) {
       $new_array[$key] = $value;
     }
   }
}

Это будет работать, только если «старый» массив отсортирован по важности, как в вашем примере.

1 голос
/ 30 июля 2011

Просто используйте array_merge с тремя массивами в качестве параметров.Самый важный должен быть последним, поэтому array_merge($array2, $array1, $array0) должен работать нормально.Числовые клавиши могут создавать проблемы:

Если, однако, массивы содержат числовые клавиши, более позднее значение не будет перезаписывать исходное значение, а будет добавлено.

Возможно, вы захотите преобразовать их в строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...