2010-02-01 17 views
5

मैं एक सरणी के अंदर मान खोजने की कोशिश कर रहा हूं। यह सरणी हमेशा 0. से शुरू होती है दुर्भाग्य से array_search सरणी तत्व के साथ खोजना प्रारंभ करें 1. तो पहला तत्व हमेशा अनदेखा होता है।सरणी खोज में समस्या

मैं इस सरणी को 1 से शुरू करने के लिए कैसे "स्थानांतरित" कर सकता हूं, या 0 के साथ सरणी-खोज शुरू कर सकता हूं? सरणी एक एक्सएमएल वेब सेवा से बाहर आती है, इसलिए मैं परिणाम संशोधित रैली नहीं कर सकता।

+0

टाइप हो सकता है कि आप दिखाना चाहिए आपका कोड और आप कैसे खोजते हैं क्योंकि स्पष्ट रूप से 'array_search' सही काम करता है लेकिन शायद यह आपके उद्देश्य के लिए सही कार्य नहीं है। –

उत्तर

2

पुस्तिका देखें, तो यह आपको मदद कर सकता है: http://www.php.net/manual/en/function.array-search.php

है कि आप क्या करने की कोशिश कर रहे हैं उपयोग एक करके कुंजी में वृद्धि है, तो आप कर सकते हैं:

function my_array_search($needle, $haystack, $strict=false) { 
    $key = array_search($needle, $haystack, $strict); 
    if (is_integer($key)) $key++; 
    return $key; 
} 
my_array_search($xml_service_array); 
+0

हम्म थेंक्स लेकिन क्या आप अधिक व्याख्या कर सकते हैं क्योंकि मैंने शून्य का उपयोग किया लेकिन काम नहीं कर रहा था। array_search() 0 कुंजी पर शुरू होता है? –

+1

सुनिश्चित करें कि इंडेक्स कुंजी ज़ीरो है, उदाहरण के लिए मेगर ने उदाहरण के रूप में क्या कहा है – Ghazanfari

+0

यह उदाहरण तकनीकी रूप से आपकी समस्या का समाधान करेगा, लेकिन परिणामस्वरूप कुंजी उस तत्व के पिछले बिंदु को इंगित करेगी जिसे आप ढूंढना चाहते हैं। हालांकि आप अभी भी तत्व 0 खोज रहे होंगे। इस प्रकार यह जो कुंजी देता है वह वास्तव में आपको नहीं बताएगा कि डेटा कहां प्राप्त करें। – meagar

13

array_searchनहीं इस उदाहरण कोशिश सूचकांक 1. पर खोज शुरू:

<?php 
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 
$key = array_search('blue', $array); // $key = 0 
?> 

जो भी समस्या मैं आपके कोड के साथ, यह नहीं है कि यह पहला तत्व सूचकांक 0 है।

यह अधिक संभावना है कि आप वापसी मूल्य की जांच के लिए के बजाय == का उपयोग करें। array_search रिटर्न 0, तो पहला तत्व का संकेत, निम्नलिखित कोड काम नहीं करेगा:

// doesn't work when element 0 is matched! 
if (false == array_search(...)) { ... } 

इसके बजाय, आप चाहिए===, और जो दोनों मूल्य की तुलना का उपयोग कर जांच

// works, even when element 0 is matched 
if (false === array_search(...)) { ... } 
+0

वाह thanx दोस्त जो कि कमाल था, मुझे लगता है कि मुझे समस्या पता है। –

+0

इस साइट पर इस बड़े लाल ** चेतावनी ** बॉक्स में कहा गया है: http://php.net/manual/en/function.array-search.php मैन्युअल पृष्ठों को पढ़ना कभी-कभी वास्तव में मदद करता है! –

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