(PHP 4, PHP 5)
extract — Bir dizideki değişkenleri simge tablosuna dahil eder
Bir dizideki değişkenleri simge tablosuna dahil eder.
Her anahtarın geçerli bir değişken adı olup olmadığına bakmaktan başka bu değişkenlerin simge tablosundakilerle çakışıp çakışmadığına da bakar.
Bir ilişkisel dizi. Bu işlev anahtarları değişken ismi, değerleri de değişkenin değeri olarak değerlendirir. Her anahtar/değer çifti için simge tablosunda çıkarım_türü ve önek 'e uygun bir değişken oluşturulur.
EXTR_PREFIX_ALL veya EXTR_PREFIX_INVALID kullanmadıkça bir sayısal indisli dizi sonuç üretmeyeceğinden bir ilişkisel dizi kullanmanız gerekir.
Geçersiz veya sayısal anahtarların ve çakışmaların ele alınma yöntemini belirtmek için kullanılır. Aşağıdaki değerlerden biri olmalıdır:
çıkarım_türü belirtilmezse EXTR_OVERWRITE belirtilmiş sayılır.
Bu değiştirge sadece çıkarım_türü olarak EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID veya EXTR_PREFIX_IF_EXISTS belirtilmişse anlamlıdır. Önekli bir sonuç geçerli bir değişken ismi oluşturmuyorsa simge tablosuna dahil edilmez. Önekler dizi anahtarlarından özdevinimli olarak bir altçizgi karakteri ile ayrılırlar.
Simge tablosuna başarıyla eklenen değişkenlerin sayısı.
Sürüm: | Açıklama |
---|---|
4.3.0 | EXTR_REFS seçeneği eklendi. |
4.2.0 | EXTR_IF_EXISTS ve EXTR_PREFIX_IF_EXISTS eklendi. |
4.0.5 | Dahil edilen değişken sayısını döndürür oldu. EXTR_PREFIX_INVALID eklendi. EXTR_PREFIX_ALL sayısal isimli değişkenleri de içerir oldu. |
Örnek 1 - extract() örneği
extract() işlevinin olası kullanımlarınadn biri de wddx_deserialize() tarafından döndürülen ilişkisel dizi içeriğinin simge tablosuna dahil edilmesidir.
<?php
/* Dizinin wddx_deserialize tarafından döndürülen
bir dizi olduğunu varsayalım */
$boyut = "büyük";
$dizi = array("renk" => "mavi",
"boyut" => "orta",
"şekil" => "küre");
extract($dizi, EXTR_PREFIX_SAME, "wddx");
echo "$renk, $boyut, $şekil, $wddx_boyut\n";
?>
Yukarıdaki örneğin çıktısı:
mavi, büyük, küre, orta
$wddx_boyut değişkeninin oluşturulmasını sağlayan EXTR_PREFIX_SAME seçeneğini belirttiğimizden $boyut değişkeninin üzerine yazılmaz. Eğer seçenek olarak EXTR_SKIP belirtmiş olsaydık $wddx_boyut değişkeni oluşturulmazdı. EXTR_OVERWRITE belirtseydik, $size "orta" değerine sahip olacaktı. Eğer EXTR_PREFIX_ALL belirtmiş olsaydık $wddx_renk, $wddx_boyut ve $wddx_şekil değişkenlerini oluşturmuş olurduk.
extract() işlevini kullanıcı girdisi ($_GET, ...) gibi güvenilmez veriler üzerinde kullanmayın. Aksi takdirde, örneğin, register_globals yönergesinin 'On' olmasını gerektiren eski kodları geçici olarak çalıştırmak isterseniz EXTR_SKIP gibi üste yazmayan çıkarım_türü değerlerini kullanmaya ve php.ini dosyasındaki variables_order yönergesinde tanımlı sırada çıkartmaya çalışın.