Key => içine yuvalanmış (çok boyutlu) dizi değiştirme

2 Cevap php

Şöyle bir boyutlu bir dizi var:

Array
(
    [0] => Array
        (
            [ClientID] => ec2173de2134fdsfg4fsdffcb4b5205
            [Name] => ABC Widgets
        )

    [1] => Array
        (
            [ClientID] => e5dfgfdg2d760f640aadfgdfgdfg47b
            [Name] => Acme Co
        )

    [2] => Array
        (
            [ClientID] => b9dfgsdfg419085c3sdgffdsgfdg313
            [Name] => 4321 Corp
        )

)

Ben aşağıdaki değiştirmek istiyorum:

Array
(
  ec2173de2134fdsfg4fsdffcb4b5205 => ABC Widgets
  e5dfgfdg2d760f640aadfgdfgdfg47b => Acme Co
  b9dfgsdfg419085c3sdgffdsgfdg313 => 4321 Corp
)

Bunu yapmak için en iyi yolu nedir? Ayrıca, ben kendi orijinal formatında dizi depolamak ve gerektiğinde diğer biçimlere dönüştürmek daha iyi olurdu? Herhangi bir yardım için teşekkür ederiz

2 Cevap

$flat = array();
foreach($multidim as $item)
    $flat[$item['ClientID']] = $item['Name'];

Eğer orijinal formu saklamak daha iyi olurdu olsun genellikle cevap olamaz. Eğer ihtiyacınız varsa bunu saklamak gerekir.

It looks like you are creating a hash table with the original data. Hash tables are very fast for accessing and inserting single data elements. However, you can't run queries against the data contained in the records--you can only retrieve based on the unique key or insert based on a generated key.

Sen "arka uç" olarak tüm alanları ile özgün biçimini kullanmak ve gösterdiği gibi bir karma tablo oluşturabilir. Geri-çekme bu tablo oluşturulur her zaman, CPU döngülerini maliyeti olduğunu.

Eğer bir veritabanına bu verileri atarsanız, DB motor kullandığınız belirli bir sorgu için gerekli olarak (ikinci) gibi düzenli (ilk gibi) veri tabloları ve hash tablolar oluşturma idare edecek. Ayrıca, belirli bir veritabanı sütun dayalı hash tabloları oluşturmak için zorlayabilirsiniz.