की पहली कुंजी देता है मैंने हाल ही में मेरे कोड में array_search फ़ंक्शन का उपयोग करते समय परेशानी देखी। मैं मूल्य "तेज" के लिए सरणी "$ allcraftatts" खोज रहा हूं। मैं एक दो लाइन प्रयोग सेट अप करके समस्या को अलग करने की कोशिश की:PHP array_search लगातार सरणी
$testcopy=$allcraftatts;
$testsharp=array_search("sharp", $testcopy);
का प्रयोग "(() get_defined_vars) print_r," बाद में, मैं इस परिणाम मिलता है:
[testcopy] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => Sharp Stone
[7] => Sharp Stones
[8] => stone
[9] => object
[10] => sharp
[11] => hard
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
)
[testsharp] => 0
मुझे यकीन है कि मैं किसी अन्य समय में इन चरों को संशोधित नहीं बनाया है।
अब, अगर मैं
$testcopy=$allcraftatts;
unset($testcopy[0]);
$testsharp=array_search("sharp", $testcopy);
करने के लिए अपने कोड बदलने यह रिटर्न "1"।
इससे मुझे विश्वास होता है कि यह हमेशा सरणी में पहली कुंजी देता है।
यह मुझे परेशान करता है! यह उन बगों में से एक है जो आपको भाषा के साथ कुछ गलत डरता है। हालांकि यह संदिग्ध है, मैं वास्तव में अंत में कुछ गलत के लिए PHP स्रोत को देखने के लिए प्रेरित किया गया था, लेकिन दुर्भाग्य से इसे समझ में नहीं आया।
यह देखते हुए कि यह एक आसान काम है, मैं निश्चित रूप से अनिवार्य रूप से सरल उत्तर से पूरी तरह से अपमानित होगा, लेकिन इस बिंदु पर, मुझे बस एक जवाब चाहिए।
आप PHP किस संस्करण का उपयोग कर रहे हैं? क्या आप हमें 'print_r' की बजाय उन चरों पर' var_dump' का आउटपुट दिखा सकते हैं? यह दिखाएगा कि आपके पास कोई अतिरिक्त रिक्त स्थान है (जो 'array_search'' के साथ एक आम हिचकी लोगों का अनुभव है) –