Programlı oluşturulan dizileri aramak için Değişken değişkenler

3 Cevap php

Ben bir içerik yönetim sistemi şablon etiketleri diziler bir dizi oluşturma ve değişkenler ile etiketlenmiş diziler gibi bu dizilerin başlıkları çıktısı ediyorum:

<Loop>

$<GeneratedArrayName1> = array( "foo" => "bar" );

$<GeneratedArrayName2> = array( "foo" => "bar" );

</Loop>

Ben de mümkün GeneratedArrayNames başka dizi üreten ve sayımı ile bu sıralama ediyorum. Ben seçici onlara göstermek böylece GeneratedArrayNames almak için bu dizi aracılığıyla döngü ediyorum. Ben tür, ben çekin ve ben GeneratedArrayNames ile sahip birçok dizilerin sadece birkaç görüntülemek istiyorum sonra. Ben ana dizinin üstünde imlecini konumlandırma ve adını alarak bu yapıyorum:

reset($ArrayNames);
$firstArray = current($ArrayNames); //outputs GeneratedArrayName1

Sonra bana bir hata verir Değişken değişken alarak GeneratedArrayName çekmeye gitti:

print_r(${$firstArray}); // outputs Undefined variable: GeneratedArrayName1

Ben kodlamalısınız Ama, ben doğru veri almak:

print_r($GeneratedArrayName1); // outputs the array

Nerede yanlış gidiyorum?

EDIT

Bu döngü ile $firstArray alıyorum:

$count = 0;
foreach($ArrayNames as $ArrayCount => $ArrayName) {

$count++;
echo "$ArrayName" . ' - ' . "$ArrayCount" . '<br>';

if ($count >= 3) {
	break;
	}

} //from here I proceed to reset($ArrayNames)

3 Cevap

Bu kod çalışıyor:

$foo=array(3,2,1);
$foostr="foo";
print_r(${$foostr});

Hangi yaptığınızı tam olarak ne olduğunu. Kodunuzda bir hata olmalı. Her nasılsa, $GeneratedArrayName1 beyanı olarak yazdırmak için çalışır noktaya göre oluşturulan almıyor.

Giriş değişkeni kontrol deneyin - emin bunun başında veya sonunda hiçbir boşluk olmadığından emin olun. trim() bunu yapmanız gerekir eğer.

Bunların hiçbiri işe yaramazsa, yazınızın bu hata üretir (tam) kod az miktarda düzenlemek ve biz ona bir göz atacağız lütfen.

$$firstArray yerine ${$firstArray} deneyebilir

Eğer çok boyutlu dizileri kullanarak değil bir sebebi var mı? Bu sözdizimi değişken değişkenler daha imho çok nettir.