2008-12-08 12 views
7

मैं एक संदेश के साथ एक सरणी बनाना चाहता हूं।php: किसी सरणी को दबाकर जो मौजूद हो सकता है या नहीं हो सकता

$myArray = array('my message'); 

लेकिन इस कोड का उपयोग, myArray अधिलेखित हो जाएगा, यदि वह पहले से ही अस्तित्व में।

यदि मैं array_push का उपयोग करता हूं, तो यह पहले से मौजूद होना चाहिए।

$myArray = array(); // <-- has to be declared first. 
array_push($myArray, 'my message'); 

अन्यथा, यह बंक जाएगा।

क्या $myArray = array(); को पहले साफ़ किए बिना काम के ऊपर दूसरा उदाहरण बनाने का कोई तरीका है?

उत्तर

5

चेक सरणी पहले से मौजूद है, और अगर ऐसा नहीं होता, बनाने यह ... तो तत्व जोड़ सकती जानते हुए भी कि सरणी निश्चित रूप से पहले से परिभाषित किया जाएगा यदि:

if (!isset($myArray)) { 
    $myArray = array(); 
} 

array_push($myArray, 'my message'); 
+0

स्नैप ... नई बिट को छोड़कर, जो मुझे नहीं लगता कि php – benlumley

+0

हे हाँ में काम करता है ... यही होता है जब आपके पास बहुत अधिक होता है आपके सिर में रोमिंग भाषाएं :-) –

27

यहाँ:

$myArray[] = 'my message'; 

$ myArray एक सरणी या सेट नहीं रहना होगा। यदि यह एक मान है जो एक स्ट्रिंग, पूर्णांक या ऑब्जेक्ट है जो सरणीकरण को लागू नहीं करता है, तो यह असफल हो जाएगा।

+1

यह अजीब है, लेकिन यह सच है। PHP उस पर कोई त्रुटि/चेतावनी/नोटिस ट्रिगर नहीं करेगा। – troelskn

+1

इसकी एक विशेषता है। :) – OIS

+0

... एक अविश्वसनीय रूप से उपयोगी सुविधा (मेरे लिए कम से कम) – da5id

0
if ($myArray) { 
    array_push($myArray, 'my message'); 
} 
else { 
    $myArray = array('my message'); 
} 
+0

आपको परीक्षण करना चाहिए कि क्या एक var को जारीकर्ता और is_array के साथ सरणी है। – OIS

+0

क्यों * और *? is_array() पर्याप्त होना चाहिए। यदि यह सेट नहीं है तो यह शायद ही कोई सरणी हो सकता है। – Tomalak

+0

हां, मेरा बुरा शब्द। मेरा मतलब था या तो। इस्तेमाल किया जाना चाहिए था या। – OIS

0

OIS 'रास्ता काम करेगा।

या

if (!isset($myArray)) 
    $myArray=array(); 
array_push($myArray, 'message'); 
3

आप is_array का उपयोग करना चाहिए(), isset नहीं। उपयोगी अगर मेरा एरे एक फ़ंक्शन से सेट किया जा रहा है जो एक सरणी या स्ट्रिंग (उदाहरण के लिए त्रुटि पर -1) देता है

यह मेरी त्रुटियों को कहीं और सरणी के रूप में घोषित नहीं किया गया है, तो यह त्रुटियों को रोक देगा।

if(is_array($myArray)) 
{ 
    array_push($myArray,'my message'); 
} 
else 
{ 
    $myArray = array("my message"); 
} 
+0

आप सही ढंग से is_array का जिक्र करते हैं, लेकिन गैर-मौजूद फ़ंक्शन array_exists का उपयोग करें। – OIS

+0

दोह! टीसीएल रास्ते में हो रहा था: पी –

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