Bu dizi yeniden bir yağmurluk yol arıyor

2 Cevap

Ben birden çok satır ile benim veritabanından bir veri sonuç döndürdü varlık var. Ben yaşıyorum sorun ben sadece başkaları için bazı öğeleri ve birden çok satır için tek bir satır gerekir ve ihtiyaç duyulan her madde için birden fazla veritabanı sorgularını yapmadan, ben veri dizisi yeniden düşündüm olmasıdır.

Ne sonra sonuçta ben bir dize olarak dizideki her bir öğeyi kullanmaktır. Son iki öğe, ürün ve konumu birden fazla satır varsa o zaman ben onları dizeleri olarak döndü gerekir.

Ne bu işlemek için en iyi yolu olurdu?

Array
(
    [0] => Array
        (
            [cid] => one line
            [model] => one line
            [mfgr] => one line
            [color] => one line
            [orderid] => one line
            [product] => many lines
            [location] => many lines
        )
    [1] => Array
        (
            .. repeats for as many rows as were found
        )
)

Bana bu soruyu yeniden sorayım. Yukarıda gördüğünüz dizi benim foreach üretilen dizidir. Dizi anahtarı [0] benim sonuç tüm verileri tutar. Dizi anahtarı [1] sadece verileri yineler. Ben sütunlar 1-5 için tek satır gerekir. Kolonlar ve 6 Birden fazla satır gereken yere 7, dolayısıyla yinelenen dizi anahtarları.

Ben bu diziye ihtiyacım bu şekilde yeniden inşa etmek olsaydı, bu gibi bir şey olacaktır:

Array
(
    [single] => Array
        (
            [cid] => one line
            [model] => one line
            [mfgr] => one line
            [color] => one line
            [orderid] => one line

            [product] => Array
              (
                    [0] => many lines
                    [1] => many lines
              )
            [location] => Array
              (
                    [0] => many lines
                    [1] => many lines
              )
        )
)

2 Cevap

Yapmak istediğiniz gruplandırma tür veritabanları geleni şey türüdür.

GROUP_CONCAT here için MySQL belgelerine arama.

Ben ne gerek anlaşıldığı takdirde, burada nasıl

foreach($array as $key => $value) {
  if(is_array($value['product'])) {
    $array[$key]['product'] = implode(', ', $value['product']);
  }

  if(is_array($value['location'])) {
    $array[$key]['location'] = implode(', ', $value['location']);
  }
}

Bu product "birden çok satır" açmak ve location virgül ile tek bir dize halinde olacaktır.