php - Foreach अनुक्रमणिका कैसे खोजें




loops (8)

PHP सरणी में आंतरिक पॉइंटर्स होते हैं, इसलिए इसे आज़माएं:

foreach($array as $key => $value){
   $index = current($array);
}

मेरे लिए ठीक काम करता है (हालांकि केवल प्रारंभिक रूप से परीक्षण किया गया है)।

क्या foreach इंडेक्स ढूंढना संभव है?

निम्नानुसार लूप में:

for ($i = 0; $i < 10; ++$i) {
   echo $i . ' ';
}

$i आपको सूचकांक दूंगा।

क्या मुझे लूप का उपयोग करना for या क्या foreach लूप में इंडेक्स प्राप्त करने का कोई तरीका है?


आप अपने foreach में एक हैक डाल सकते हैं, जैसे प्रत्येक रन-थ्रू पर एक फ़ील्ड बढ़ाया गया है, जो वास्तव में लूप के for आपको संख्यात्मक रूप से अनुक्रमित सरणी में देता है। ऐसा क्षेत्र एक छद्म सूचकांक होगा जिसे मैन्युअल प्रबंधन (वेतन वृद्धि, आदि) की आवश्यकता होती है।

एक foreach आपको अपने सूचकांक को आपके $key मूल्य के रूप में देगा, इसलिए ऐसा हैक आवश्यक नहीं होना चाहिए।

उदाहरण के लिए, एक foreach

$index = 0;
foreach($data as $key=>$val) {
    // Use $key as an index, or...

    // ... manage the index this way..
    echo "Index is $index\n";
    $index++;
}

ओवेन का एक अच्छा जवाब है। यदि आप केवल कुंजी चाहते हैं, और आप एक सरणी के साथ काम कर रहे हैं तो यह भी उपयोगी हो सकता है।

foreach(array_keys($array) as $key) {
//  do stuff
}

जोनाथन सही है। PHP arrays मानों के लिए मानचित्र तालिका मैपिंग कुंजी के रूप में कार्य करते हैं। यदि आपके सरणी को परिभाषित किया गया है, तो कुछ मामलों में आप एक अनुक्रमणिका प्राप्त कर सकते हैं

$var = array(2,5);

for ($i = 0; $i < count($var); $i++) {
    echo $var[$i]."\n";
}

आपका आउटपुट होगा

2
5

इस मामले में सरणी में प्रत्येक तत्व में एक जानकार सूचकांक होता है, लेकिन यदि आप निम्न की तरह कुछ करते हैं

$var = array_push($var,10);

for ($i = 0; $i < count($var); $i++) {
    echo $var[$i]."\n";
}

आपको कोई आउटपुट नहीं मिलता है। ऐसा इसलिए होता है क्योंकि PHP में सरणी रैखिक संरचनाएं नहीं हैं जैसे कि वे अधिकतर भाषाओं में हैं। वे हैश टेबल की तरह हैं जो सभी संग्रहीत मूल्यों के लिए कुंजी हो सकती है या नहीं। इसलिए foreach इंडेक्स का उपयोग उन पर क्रॉल करने के लिए नहीं करता है क्योंकि सरणी परिभाषित होने पर उनके पास केवल एक अनुक्रमणिका होती है। यदि आपको एक इंडेक्स रखने की आवश्यकता है, तो सुनिश्चित करें कि आपके सरणी उन पर क्रॉल करने से पहले पूरी तरह से परिभाषित हैं, और लूप के लिए उपयोग करें।


यह ध्यान दिया जाना चाहिए कि आप वर्तमान कुंजी को खोजने के लिए किसी भी सरणी पर key() को कॉल कर सकते हैं। जैसा कि आप अनुमान लगा सकते हैं current() वर्तमान मान वापस कर देगा और next() सरणी के सूचक को अगले तत्व में ले जाएगा।


ये दो लूप बराबर हैं (पाठ्यक्रम की सुरक्षा रेलिंग बार):

for ($i=0; $i<count($things); $i++) { ... }

foreach ($things as $i=>$thing) { ... }

जैसे

for ($i=0; $i<count($things); $i++) {
    echo "Thing ".$i." is ".$things[$i];
}

foreach ($things as $i=>$thing) {
    echo "Thing ".$i." is ".$thing;
}

foreach($array as $key=>$value) {
    // do stuff
}

$key प्रत्येक $array तत्व की अनुक्रमणिका है


foreach($arrvariable as $key=>$value){
echo "$key";
}




foreach