views:

33

answers:

2

Hi erveryone,

I have 2 assoc. Arrays which have the same structure, but only one ID is identical. I need to add content to the MainArray from the IncludeArray everytime the specific ID is identical.

Here are a sample of the Arrays (MainArray could hold up to 100 or more items, the sample contains only a portion of the real content):

$MainArray = Array
 (
   [0] => Array
      (
        [item_id] => 1
        [name] => Test1
        [helptxt] => Helptext for item-id 1.
        [type_id] => 1      #could be the same for many other items!!
      )
   [1] => Array
      (
        [item_id] => 2
        [name] => Test2
        [helptxt] => Helptext for item-id 2.
        [type_id] => 2      #could be the same for many other items!!
      )
   and a lot more Arrays
 )


$IncludeArray = Array
(
  [0] => Array
      (
        [type_id] => 1
        [typetitle] => Number
        [typedesc] => Description Text type_id 1
      )
  [1] => Array
      (
        [type_id] => 2
        [typetitle] => Value
        [typedesc] => Description Text type_id 2
      )
 )

The desired new array should be:

 $NewMainArray = Array
 (
   [0] => Array
      (
        [item_id] => 1
        [name] => Test
        [helptxt] => Helptext for item-id 1.
        [type_id] => 1
        [typetitle] => Number
        [typedesc] => Description Text type_id 1
      )
   [1] => Array
      (
        [item_id] => 2
        [name] => Test2
        [helptxt] => Helptext for item-id 2.
        [type_id] => 2
        [typetitle] => Value
        [typedesc] => Description Text type_id 2
      )
    And so on with all other items in the Array.
 )

So eachtime a type_id is found in $MainArray the content of [typetitle] + [typedesc] should be added to the $NewMainArray.

Most of my tests ended in having the Arrays only merged or just added the $IncludeArray only once. Even my Forum Searches don't got me to a solution.

The Arrays are created from 2 separate DB-Requests, which I couldn't join (Already tried several attempts). This is related to different WHERE and AND clauses, which don't work on a joined request.

I hope there is a smart way to get the desired $NewMainArray. BTW I use PHP4 and I'm a newbie to PHP (at least for this kind of problem).

Thanks a lot for your help.

A: 

Take a look at the array_merge_recursive function ;)

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

D4V360
Thanks. I had been there, but wasn't sure it is what I was looking for. The Solution from Joel Alejandro works.
ste_php
+1  A: 
Joel Alejandro
That's more or less the brute-force-approach ;-) If you have many, many elements it might be worth building something like an index/lookup for elements, e.g by building an array/hashtable type_id=>(elements).
VolkerK
GREAT!!! Thanks for your help. Even it is a brute-force-approach it works like a charm. For me, it is good for now.
ste_php
I'd appreciate you accepting the answer ;) And yes, it is a brute-force approach, I'm sure there are *way* better methods than this one. Yet, this one keeps it simple.
Joel Alejandro