2012-10-14 7 views
52

मुझे पुस्तकों या वेब पर कोई उदाहरण नहीं मिल रहा है, यह बताते हुए कि कोई व्यक्ति केवल एक ही नामक (खाली मूल्यों के साथ) नामक एक एसोसिएटिव सरणी को कैसे शुरू करेगा - बेशक, यह निश्चित रूप से IS उचित तरीकेकुंजी नामों के साथ एक एसोसिएटिव ऐरे शुरू करें लेकिन खाली मान

मानो वहाँ यह करने के लिए एक और अधिक कुशल तरीका है यह सिर्फ लगता है (?):

config.php

class config { 
    public static $database = array (
     'dbdriver' => '', 
     'dbhost' => '', 
     'dbname' -> '', 
     'dbuser' => '', 
     'dbpass' => '' 
    ); 
} 

// Is this the right way to initialize an Associative Array with blank values? 
// I know it works fine, but it just seems ... longer than necessary. 

index.php

require config.php 

config::$database['dbdriver'] = 'mysql'; 
config::$database['dbhost'] = 'localhost'; 
config::$database['dbname'] = 'test_database'; 
config::$database['dbuser'] = 'testing'; 
config::$database['dbpass'] = '[email protected]$$w0rd'; 

// This code is irrelevant, only to show that the above array NEEDS to have Key 
// names, but Values that will be filled in by a user via a form, or whatever. 

किसी भी सिफारिशें, सुझाव, या दिशा की सराहना की जाएगी। धन्यवाद।

+0

अरे, महत्वपूर्ण नहीं है, लेकिन आप 'DBNAME' में लिखा है -> '' जहां यह किया जाना चाहिए था 'DBNAME' => ' '- मेरे पास संपादन करने के लिए पर्याप्त प्रतिष्ठा नहीं है। – Martha

उत्तर

47

आपके पास सबसे स्पष्ट विकल्प है।

लेकिन आप इसे array_fill_keys उपयोग करते हुए, इस तरह छोटा कर सकते हैं:

$database = array_fill_keys(
    array('dbdriver', 'dbhost', 'dbname', 'dbuser', 'dbpass'), ''); 

लेकिन उपयोगकर्ता वैसे भी मूल्यों को भरने के लिए है, तो आप सिर्फ खाली सरणी छोड़ सकते हैं, और सिर्फ सूचकांक में उदाहरण कोड प्रदान करते हैं। php। जब आप कोई मान निर्दिष्ट करते हैं तो कुंजी स्वचालित रूप से जोड़ दी जाएंगी।

+0

आपको कक्षा के बाहर यह करना है, हालांकि, क्योंकि आप कक्षा परिवर्तनीय घोषणाओं में किसी भी फ़ंक्शन को कॉल नहीं कर सकते हैं। वह * हो सकता है * परिणामस्वरूप अधिक कोड, या शुरुआती कोड उन स्थानों पर दिखाई दे रहा है जहां आप इसे देखने की उम्मीद नहीं करते हैं। – BoltClock

+0

यही वह है जिसे मैं ढूंढ रहा था! धन्यवाद! – NYCBilly

+0

@ बोल्टक्लॉक हाँ, मैं वैसे भी इस विकल्प को नहीं चुनूंगा। 'सामान्य' सरणी प्रारंभिकरण के लिए आपको आवश्यक अतिरिक्त वर्ण मुझे कोड के बारे में बहुत स्पष्ट करते हैं। मैं इसे छोड़ दूंगा। बस यह दिखा रहा है कि यदि आप चाहते हैं, तो ऐसा करने के तरीके हैं। :) आप इसे एक कन्स्ट्रक्टर में कर सकते हैं, लेकिन निश्चित रूप से स्थिर वर्ग के लिए नहीं। – GolezTrol

1

पहले फ़ाइल:

class config { 
    public static $database = array(); 
} 

अन्य फ़ाइल:

config::$database = array(
    'driver' => 'mysql', 
    'dbhost' => 'localhost', 
    'dbname' => 'test_database', 
    'dbuser' => 'testing', 
    'dbpass' => '[email protected]$$w0rd' 
); 
+0

यह कठिन कोडित है, मेरी दूसरी फ़ाइल सिर्फ एक उदाहरण थी - मुझे पहले से परिभाषित कुंजी की आवश्यकता थी। – NYCBilly

संबंधित मुद्दे