Объединение двух массивов с помощью общего ключа в php

Мне удалось извлечь данные из базы данных и поместить их в массив с именем $NameandAge

(Peter:12, Kim:32, Paul:23)

С другой стороны, я также извлек другой набор данных из другого набора базы данных и поместил их в массив $StateandName.

(New York:Peter, Washington:Kim, Tennessee:Paul)

Чего мне нужно добиться, так это объединить эти два набора массивов в один, используя имя в качестве ключа для создания такой таблицы:

New York Peter 12,
Washington Kim 32,
Tennessee Paul 23,

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

for(){       ///////////////loop array $StateandName
     for(){      ////////////loop array $NameandAge
          if($nameinfirstarr == $nameinsecondarr){
               echo .....;  ////////print out the State, Name and Age   
          }

      }
}  

person user1033038    schedule 21.01.2014    source источник
comment
рабочий пример был бы отличным   -  person aconrad    schedule 21.01.2014
comment
вы можете посмотреть на этот ответ PHP ARRAY JOIN   -  person Erdal CEYLAN    schedule 26.10.2017


Ответы (2)


Нет необходимости в двух циклах:

foreach ($StateaandName as $state => $name) {
    $newarr[$state][$name] = $NameandAge[$name];
}

предполагая, что между записями в двух массивах есть совпадение 1: 1, это поможет. Если ваши массивы имеют разные имена и не совпадают 1:1, тогда вам понадобится ДВА таких цикла, по одному для работы с каждым массивом по очереди.

person Marc B    schedule 21.01.2014
comment
Я не знаком с массивами ключей. Прямо сейчас у меня есть только один элемент массива. - person user1033038; 21.01.2014
comment
Может быть, вы можете показать мне, как в первую очередь назначать данные массивам ключей и значений? - person user1033038; 21.01.2014

Используйте array_merge(). Является функцией PHP, которая объединяет оба массива, перезаписывая значения для одних и тех же ключей, когда ключи имеют строковые значения, а не числовые, как в вашем случае.

person digitai    schedule 21.01.2014