Id eşit pozisyonundaki PHP arama dizi ve ekleme içerik

2 Cevap php

Ben 2. Doç var. Hangi diziler aynı yapıya sahip, ama sadece bir kimlik aynıdır. Ben özel kimlik aynıdır IncludeArray her şey gelen MainArray içerik eklemek gerekir.

İşte Dizilerin bir örnek vardır (MainArray 100 veya daha fazla öğe kadar tutunabileceği, örnek gerçek içeriği yalnızca bir bölümünü içerir):

$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
      )
 )

İstenilen yeni dizi olmalıdır:

 $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.
 )

Bu yüzden, bir eachtime type_id $ MainArray içinde [typetitle] + [typedesc] $ NewMainArray eklenmelidir içeriği bulunur.

Benim testlerin çoğu sadece birleştirilmiş Dizileri sahip bitti ya da sadece bir kez $ IncludeArray ekledi. Hatta benim Forumu aramalar bir çözüm beni yok.

Diziler ben katılamadı 2 ayrı DB-İstekler, (Zaten çalıştı çeşitli girişimler) oluşturulur. Bu katıldı istek üzerine işe yaramazsa, hangi NEREDE ve AND yan tümceleri farklı ile ilgili olduğunu.

Ben arzu $ NewMainArray almak için akıllı yol olduğunu umuyoruz. BTW PHP4 kullanmak ve ben (en azından bu tür sorun için) PHP bir acemi değilim.

Yardımlarınız için teşekkürler çok.

2 Cevap

Bu deneyin:


/**
 * Simulates relational table behaviour by joining data matching an ID value.
 * Works with single-nested arrays.
 *
 * @author Joel A. Villarreal Bertoldi
 *
 * @param  $source           array     The source array.
 * @param  $include_to_row   array     The row where we'll deposit the joined data.
 * @param  $match            string    Unique id field name.
 * 
 * @return array             Row with joined data.
 */

function includeFromArray($source, $include_to_row, $match)
{
  foreach ($source as $source_row)
  {
    if ($source_row[$match] == $include_to_row[$match])
    {
      foreach ($source_row as $source_column_key => $source_column_value)
      {
        $include_to_row[$source_column_key] = $source_column_value;
      }
    }
  }
  return $include_to_row;
}

for ($ma = 0; $ma < count($MainArray); $ma++)
  $NewMainArray[$ma] = includeFromArray($IncludeArray, $MainArray[$ma], "type_id");

Sonuçlar:


Array
(
    [0] => Array
        (
            [item_id] => 1
            [name] => Test1
            [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
    )

)

Array_merge_recursive fonksiyonuna bir göz atın ;)

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