Здравствуйте и спасибо за ваш интерес
У меня есть два массива :
- [A] - от mysql запрос одной базы данных на сервере1 - $ postings_array - ВЫБОР всех публикаций цепочки обсуждений (на основе идентификатора цепочки)
- [B] -из mysql запроса другой базы данных на сервере2 - $ usersdata_array - ВЫБОР всех сообщений обсуждений (на основе идентификатора потока)
Это означает:
- в [A] есть много под-массивов записей и в [B] одной или нескольких подпрограммах userdata-sub -arrays.
- оба массива всегда содержат ключ с именем usrsID в каждом из своих подмассивов.
I need to extend the Sub-Arrays in $postings_array [A]
by merging them
with the Sub-Arrays of the $usersdata_array [B]
based on WHERE the VALUE of the usrsID KEY in the sub-array[A] is EQUAL to the usrsID KEY in the sub-array[B].
ПРИМЕР:
Array [A]:
(
[0] => Array
(
[ID] => 5
[usrsID] => 3
[tid] => 19
[txtid] => 22
)
[1] => Array
(
[ID] => 6
[usrsID] => 1
[tid] => 19
[txtid] => 23
)
[2] => Array
(
[ID] => 7
[usrsID] => 2
[tid] => 19
[txtid] => 24
)
[3] => Array
(
[ID] => 8
[usrsID] => 1
[tid] => 19
[txtid] => 25
)
)
-
Array [B]:
(
[0] => Array
(
[id] => 1
[usrsID] => 1
[avatarID] => 1
)
[1] => Array
(
[id] => 2
[usrsID] => 2
[avatarID] => 3
)
[2] => Array
(
[id] => 3
[usrsID] => 3
[avatarID] => 22
)
)
необходимый результат (на [B] расширен [A] для примера выше):
Array [A_extended]:
(
[0] => Array
(
[ID] => 5
[usrsID] => 3
[tid] => 19
[txtid] => 22
[id] => 3
[avatarID] => 22
)
[1] => Array
(
[ID] => 6
[usrsID] => 1
[tid] => 19
[txtid] => 23
[id] => 1
[avatarID] => 1
)
[2] => Array
(
[ID] => 7
[usrsID] => 2
[tid] => 19
[txtid] => 24
[id] => 2
[avatarID] => 3
)
[3] => Array
(
[ID] => 8
[usrsID] => 1
[tid] => 19
[txtid] => 25
[id] => 1
[avatarID] => 1
)
)
... Я думаю, это общая проблема, поэтому должен быть лучший попрактикуйтесь (может быть в одной встроенной функции php или комбинации двух или трех из них) - и мне не нужно изобретать велосипед. По крайней мере, я надеюсь, что ...
иначе, мой подход будет
- проверить количество итераций (= подмассивы, найденные в $ usersdata_array [B])
- выполняет итерацию по externalHaystack и запускает функцию, когда $ needle был найден в innerHaystack
- , выполняет объединение с помощью checkSubArrayfun c
Подход с hayStackArray = complete [A] Array; needle = значение $ usrsID для подмассива [B]:
function checkSubArrayfunc($hayStackSubArray, $needle, $toMergeSubArray) {
if (in_array(array('$hayStackSubArray'), $needle)) {
array_merge_recursive($hayStackSubArray, $toMergeSubArray);
}
}