diziye bir dize dönüştürmek için en iyi yolu

4 Cevap php

I have an array $AR
I have a string "set[0][p1]"

Bu dize verildiğinde, ben $AR['set'][0]['p1'] de dizi erişmek için en iyi yol gerekir

Ben o dizeye toplam kontrole sahip, bu yüzden enjeksiyon ve malzeme den endişelenmenize gerek yok, ve ben iyi biçimlendirilmiş olacak emin olabilirsiniz. Ben olmak 'içine p1 koyabilirsiniz yolu yoktur "set[0]['p1']"

4 Cevap

Belki de bu deli, ama özü kabul var? Bu hızlı çözüm olmayabilir, ama çok az kod ihtiyacı yenilik vardır.

extract( $AR );
$target = eval("\$set[0]['p1']");

Önemli fark (kadarıyla giriş söz konusu olduğu gibi) dize önceden pend '$' ihtiyaç ve parantez içinde tırnak işaretleri olduğundan emin olduğunu ifade etti.

Büyük avantajı size gerçekleştirmek için çalışıyoruz ne derece belirgin hale gelir, ve iki doğal PHP fonksiyonları kullanarak konum olmasıdır. Bunların her ikisi de çözümü çok daha "okunabilir" Sisteminizde aşina olanlar tarafından olacağı anlamına gelir.

Oh, ve sadece iki kod hatları kullanarak ediyoruz.

Sen gibi bir şey gerekir. Ben yanlış bir şey varsa biri bana doğru olabilir ... "[" ve ​​"]" parantez önce onlara bir regex çalıştırmak zorunda kalmamıştım olarak yaklaşık% 100 değilim?

foreach(preg_split('/[\[\]]/', "set[0][p1]") as $aValue) {
    $AR[$aValue[0]][$aValue[1]][$aValue[2]] = '?';
}