दिलचस्प पोस्ट
वाटीन / आईई 9 के साथ फाइल डाउनलोड करने का परीक्षण कैसे करें? किसी एप्लिकेशन को लॉन्च करें और उसे दूसरे मॉनीटर पर भेजें? रेल सर्वर पर रुबी विकल्प लूप करते समय स्कैनर इनपुट सत्यापन सीमके: सीमके द्वारा उत्पन्न परियोजना में कॉन्फिगरेशन के आधार पर दृश्य स्टूडियो और एक्सकोड एक्सक्लेबल्स का नाम बदलना उदाहरण क्षेत्रों बनाम स्थानीय चर की शुरुआत यूनिकोड से “ “ “ “ “ “ “ “ “ “ “ “ “ “ ` कॉम्बोबॉक्स चयनित मद हाइलाइट रंग सेट करें अधिकांश पोर्ट पर सुनते समय Node.js EACCES त्रुटि डीबग / रिलीज मोड में फ़्लोट / डबल स्पिशन जावास्क्रिप्ट में स्ट्रिंग लंबाई बाइट्स में Data.table में एक कुंजी सेट करने का क्या उद्देश्य है? एंड्रॉइड – खींचें और ड्रॉप – सूची पुन: व्यवस्थित करें (बहुत) बुनियादी पायथन क्लाइंट सॉकेट उदाहरण एक सेलेरी टास्क में एक स्कैरा मकड़ी चलाएं

अवैध स्ट्रिंग ऑफसेट चेतावनी PHP

5.4.0-3 से मेरे PHP संस्करण को अपडेट करने के बाद मुझे एक अजीब PHP त्रुटि मिलती है।

मेरे पास यह सरणी है:

Array ( [host] => 127.0.0.1 [port] => 11211 ) 

जब मैं इसे इस तरह पहुंचने की कोशिश करता हूं तो मुझे अजीब चेतावनियां मिलती हैं I

  print $memcachedConfig['host']; print $memcachedConfig['port']; Warning: Illegal string offset 'host' in .... Warning: Illegal string offset 'port' in ... 

मैं वास्तव में बस php.ini को संपादित करने और त्रुटि स्तर को फिर से सेट नहीं करना चाहता हूं।

किसी भी मदद के लिए धन्यवाद!

Solutions Collecting From Web of "अवैध स्ट्रिंग ऑफसेट चेतावनी PHP"

कृपया इस तरह से प्रयास करें …. मैंने इस कोड का परीक्षण किया है …. यह काम करता है ….

 $memcachedConfig = array("host" => "127.0.0.1","port" => "11211"); print_r ($memcachedConfig['host']); 

गलत Illegal string offset 'whatever' in... सामान्यतः इसका मतलब है: आप पूर्ण स्ट्रिंग के रूप में एक स्ट्रिंग का उपयोग करने का प्रयास कर रहे हैं।

यह वास्तव में संभव है क्योंकि स्ट्रिंग को पीएचपी में एकल वर्णों की सरणियों के रूप में माना जा सकता है। तो आप सोच रहे हैं कि $ var कुंजी के साथ एक सरणी है, लेकिन यह मानक संख्यात्मक कुंजी के साथ सिर्फ एक स्ट्रिंग है , उदाहरण के लिए:

 $fruit_counts = array('apples'=>2, 'oranges'=>5, 'pears'=>0); echo $fruit_counts['oranges']; // echoes 5 $fruit_counts = "an unexpected string assignment"; echo $fruit_counts['oranges']; // causes illegal string offset error 

आप इसे यहां कार्रवाई में देख सकते हैं: http://ideone.com/fMhmkR

जो लोग इस त्रुटि के अभाव को अनुवाद करने के लिए इस प्रश्न के बारे में कुछ करने के लिए कोशिश करते हैं, जैसे मैं था।

टी एल; डॉ

आप string तक पहुंचने का प्रयास कर रहे हैं जैसे कि यह एक सरणी है, जिसमें एक string string कि समझ नहीं होगा कोड में हम समस्या देख सकते हैं:

 "hello"["hello"]; // PHP Warning: Illegal string offset 'hello' in php shell code on line 1 "hello"[0]; // No errors. array("hello" => "val")["hello"]; // No errors. This is *probably* what you wanted. 

गहराई में

चलिए यह त्रुटि देखते हैं:

चेतावनी: अवैध स्ट्रिंग ऑफसेट 'पोर्ट' में …

यह क्या कहता है? यह कहता है कि हम स्ट्रिंग 'port' लिए ऑफसेट के रूप में स्ट्रिंग 'port' का उपयोग करने का प्रयास कर रहे हैं इस कदर:

 $a_string = "string"; // This is ok: echo $a_string[0]; // s echo $a_string[1]; // t echo $a_string[2]; // r // ... // !! Not good: echo $a_string['port']; // !! Warning: Illegal string offset 'port' in ... 

इसका कारण क्या है?

किसी कारण के लिए आपको एक array आशा थी, लेकिन आपके पास string । बस एक मिश्रण अप शायद आपका चर बदल गया था, शायद यह कभी भी array नहीं था, यह वास्तव में महत्वपूर्ण नहीं है

क्या किया जा सकता है?

अगर हम जानते हैं कि हमारे पास एक array , तो हमें यह तय करने के लिए कुछ बुनियादी डिबगिंग करना चाहिए कि हमारे पास एक array क्यों नहीं है। अगर हमें नहीं पता कि हमारे पास एक array या string , तो चीजें थोड़ा पेचीदा बन जाती हैं।

हम क्या कर सकते हैं यह सुनिश्चित करने के लिए सभी प्रकार की जाँच कर रहे हैं कि हमारे पास नोटिस, चेतावनियां या त्रुटियों जैसी त्रुटियां नहीं is_array और जारी या array_key_exists :

 $a_string = "string"; $an_array = array('port' => 'the_port'); if (is_array($a_string) && isset($a_string['port'])) { // No problem, we'll never get here. echo $a_string['port']; } if (is_array($an_array) && isset($an_array['port'])) { // Ok! echo $an_array['port']; // the_port } if (is_array($an_array) && isset($an_array['unset_key'])) { // No problem again, we won't enter. echo $an_array['unset_key']; } // Similar, but with array_key_exists if (is_array($an_array) && array_key_exists('port', $an_array)) { // Ok! echo $an_array['port']; // the_port } 

isset और array_key_exists बीच कुछ सूक्ष्म अंतर हैं उदाहरण के लिए, यदि $array['key'] का मान null , तो isset false देता है array_key_exists बस यह array_key_exists कि, ठीक है, कुंजी मौजूद है

यहां बहुत सारे अच्छे उत्तर दिए गए हैं – लेकिन मुझे लगता है कि मेरी समस्या काफी अधिक सरल थी।

मैं निम्नलिखित कमांड चलाने की कोशिश कर रहा था:

 $x['name'] = $j['name']; 

और मुझे यह illegal string त्रुटि $x['name'] पर मिल रही थी क्योंकि मैंने पहली बार सरणी को परिभाषित नहीं किया था इसलिए $x[] लिए चीजें आवंटित करने से पहले मैंने निम्नलिखित कोड की कोड डाल दी:

 $x = array(); 

और यह काम किया

जैसा कि PHP 5.4 से है, हमें एक समान डेटाटाइप मान को पारित करने की आवश्यकता है जो एक फ़ंक्शन की अपेक्षा करता है। उदाहरण के लिए:

 function testimonial($id); // This function expects $id as an integer 

इस फ़ंक्शन को लागू करते समय, यदि कोई स्ट्रिंग मान इस प्रकार प्रदान किया जाता है:

 $id = $array['id']; // $id is of string type testimonial($id); // illegal offset warning 

यह डाटाटिप बेमेल के कारण एक ऑफसेट चेतावनी उत्पन्न करेगा। इसे सुलझाने के लिए, आप settype उपयोग कर सकते हैं:

 $id = settype($array['id'],"integer"); // $id now contains an integer instead of a string testimonial($id); // now running smoothly 

सरणी की जांच करने से पहले, यह करें:

 if(!is_array($memcachedConfig)) $memcachedConfig = array(); 

मेरे मामले में मैं mysql_fetch_assoc को mysql_fetch_array में बदलता हूं और हल करता हूं। इसे हल करने में 3 दिन लगते हैं 🙁 और मेरे प्राइएक्ट के अन्य संस्करण फ़ेच एशॉक के साथ चलाते हैं

बस किसी को मदद मिलती है, मुझे यह त्रुटि मिल रही है क्योंकि मैं एक श्रृंखलाबद्ध सरणी को अनसुलझ करना भूल गया था यह निश्चित रूप से निश्चित है कि मैं जांच दूँगा कि यह आपके मामले पर लागू होता है या नहीं।

यह एक पुराना है लेकिन अगर किसी से इसका फायदा हो सकता है यदि आपकी सरणी खाली है तो आपको यह त्रुटि भी मिल जाएगी।

मेरे मामले में मेरे पास था:

 $buyers_array = array(); $buyers_array = tep_get_buyers_info($this_buyer_id); // returns an array ... echo $buyers_array['firstname'] . ' ' . $buyers_array['lastname']; 

जो मैं में बदल गया:

 $buyers_array = array(); $buyers_array = tep_get_buyers_info($this_buyer_id); // returns an array ... if(is_array($buyers_array)) { echo $buyers_array['firstname'] . ' ' . $buyers_array['lastname']; } else { echo 'Buyers id ' . $this_buyer_id . ' not found'; } 

मेरे मामले में, मैंने इसे हल किया, जब मैंने फ़ंक्शन में बदल दिया जो एसक्यूएल क्वेरी के बाद करता है: return json_encode($array) तब: return $array