2011-06-04 6 views
17

चलें कहते हैं कि मैं एक चर बुलाया $ फ़ाइल और पाश के लिए है: for($i=1; $i <= 5; $i++) {}एक लूप में PHP चर नाम बदलने के लिए कैसे?

की पाश के लिए, $i मूल्य $file चर नाम से जोड़ दिए जाएंगे प्रत्येक यात्रा के लिए इतना के बाद पाश समाप्त होता है के लिए, मैं होना चाहिए पांच चर: $file1, $file2, $file3, $file4, और $file5

+4

आप ऐसा क्यों करना चाहते हैं? एक पोर्टेबल नेमस्पेस के रूप में एक (सहयोगी) सरणी का उपयोग करना लगभग हमेशा एक बेहतर समाधान है। –

उत्तर

55

उपयोग ${'varname'} syntax:

for($i=1; $i <= 5; $i++) { 
    ${'file' . $i} = $i; 
} 

हालांकि, यह बजाय इस के एरे उपयोग करने के लिए अक्सर बेहतर है।

+0

+1, भूल गया कि आप ब्रेसिज़ का उपयोग कर संदर्भ दे सकते हैं। –

+3

@Yuri बहुत बहुत धन्यवाद! यहां तक ​​कि 2014 में आपका जवाब लोगों की मदद कर रहा है! – sweaty

+1

मैं जो कर रहा हूं उसके लिए Arrays मदद नहीं करेगा, मैं लाइन से एक फ़ाइल लाइन बना रहा हूं, इसलिए मेरे पास '$ line01 =" foo "' .... '$ line55 =" bar "' है इसलिए यह चर वैरिएबल विधि ऐसा लगता है मेरे लिए सबसे अधिक समझ बनाने के लिए, जब तक लाइनों से लाइन बनाने में कोई बेहतर तरीका न हो? इसलिए। 01-09 को भी 0 पैडिंग कैसे हो सकता है? मुझे लगता है कि लूप के भीतर एक कथन है लेकिन क्या कोई बेहतर तरीका है? –

1

Variable Variables पर PHP के मैनुअल देखें।

$var_name = ''; 
for ($i = 0; $i < 5; $i++) 
{ 
    $var_name = 'file' . $i; 

    // reference $$var_name now. 
    $$var_name = 'foo'; 
} 

var_dump($file1); 
var_dump($file2); 
var_dump($file3); 
var_dump($file4); 
var_dump($file5); 

demo

9

वहाँ यह करने के लिए एक तरीका है:

for($i = 1; $i <= 5; $i++) { 
    ${'file'.$i} = ...; 
} 

लेकिन यह एक बुरा विचार यह करने के लिए है। यह एक बुरा विचार क्यों है? क्योंकि यह सरणी के लिए हैं। इस के बजाय कार्य करें:

for($i = 1; $i <= 5; $i++) { 
    $file[$i] = ...; 
} 

(एनबी यह सामान्य सम्मेलन 0 के बजाय 1 पर सरणी कुंजी शुरू करने के लिए है, लेकिन आप ऐसा करने के लिए नहीं है।।)

+0

+1 बस मैं क्या कहने जा रहा था। –

1

साथ ही आप एक सरणी का उपयोग कर सकते । इसका सटीक प्रभाव नहीं पड़ता है, लेकिन आम तौर पर मैं इन स्थितियों में उपयोग किया जाता हूं।

for($i=1; $i <= 5; $i++) { 
    $file[$i] = $i; 
} 
4

यह तुम क्या चाहते करने के लिए संभव है, लेकिन मक्खी पर चर बनाने (मैं गलत हो सकता है)

मैं एक में फ़ाइल नाम के भंडारण के सुझाव है कि इस तरह की एक समस्या को हल करने के लिए एक असामान्य तरीका लगता है सरणी, कि जिस तरह से आप आसानी से बाद में नहीं फ़ाइलों पर पुनरावृति कर सकते हैं या एक अतिरिक्त फ़ाइल जोड़ सकते हैं और किसी भी हार्डकोडेड चर नाम

0

बदलने के लिए PHP मैनुअल में Variable variables अनुभाग देखें है। आप अपनी आवश्यकताओं के लिए $$ का उपयोग कर सकते हैं:

<?php 
    $var_prefix = 'file'; 
    for($i=1; $i <= 5; $i++) { 
     $var_name = $var_prefix . $i; 
     $$var_name = 'Foo Bar Blah Baz ' . $i; 
    } 
    var_dump($file1, $file2, $file3, $file4, $file5); 
?>