PHP each() – The Iterators Functions

PHP में Array की Traversing करने के लिए यानी किसी Array के सभी Elements को एक-एक करके Access व Manipulate करने के लिए कुछ Functions बनाए गए हैं। इन Functions को Iterator Functions कहते हैं।

PHP का हर Array इस बात का ध्यान रखता है कि हम Currently Array के किस Item के साथ प्रक्रिया कर रहे हैं। ये एक Pointer होता है, जो Array के Current Element को Point करता है। Array के Current Element के Pointer को Iterator कहा जाता है।

PHP हमें इस Iterator को विभिन्न तरीकों से Set, MoveReset करने के लिए कई Functions Provide करता है। इनमें से कुछ Functions Array के Current Element की Key को Return करते हैं, कुछ Functions Array के Current Element की Value को Return करते हैं तो कुछ Function किसी Array के Current Element की Key व Value दोनों को Return करते हैं।

key() Function

ये Function Array के उस Element की Key को Return करता है, जिसे Iterator द्वारा Currently Point किया जा रहा है। ये Function Argument के रूप में उस Array को Accept करता है, जिसके Current Element की Key को हम Return करना चाहते हैं।

यदि किसी Array में कोई Element न हो अथवा Array की Current Iterator Position पर कोई Element न हो, तो  ये Function NULL Return करता है।

इस Function को हम निम्नानुसार एक Loop में Use करके Array के सभी Keys को One by One Return करवा सकते हैं:

<?php
	$name = array(
				'Jaipur'=>'Rajesh', 
				'Bali'=>'Mahesh', 
				'Rani'=>'Suresh', 
				'Pali'=>'Ganesh'
			);
	
	Echo "Specify the names associated with these cities: \n";
	while($key = key($name)){
		print "$key \n";
		next($name);
	}		
?>

//Output
Specify the names associated with these cities:
Jaipur
Bali
Rani
Pali

इस Program में हमने एक while Loop Use किया है और इस Loop में Condition के रूप में $key = key($name) Expression Specify किया है। जब ये Loop Run होता है, तो key()  को अगले Function $name नाम के Array के Iterator की Position पर Specified Key को Return करता है और उस Key को Value के रूप में $key नाम के Variable में Store कर देता है।

चूंकि while Loop के कोष्‍टठक में Specified Variable $key में एक Valid Key Value होने की वजह से $key = key($name) Expression True Return करता है, फलस्वरूप Control Loop की Body में Enter होता है और Key के मान को Print कर देता है।

चूंकि key() Function Iterator को अगले Array Element पर Move नहीं करता, इसलिए अगले Array Element पर Iterator को Move करने के लिए हमने अगले Statement में next() Function को Use किया है।

इस तरह से जब तक $name नाम के Array में Values होती हैं, ये while Loop Run होता रहता है और Array के सभी Elements की Keys को Output में Display करता रहता है। जब Array में एक भी Element नहीं बचता, तब key() Function कोई Key Return नहीं करता। परिणाम स्वरूप $key Variable में NULL मान Store हो जाता है, जो कि while Loop को Terminate कर देता है।

इस प्रकार से key()next() Function का प्रयोग करके हम किसी Array के विभिन्न Elements की आसानी से Traversing करते हुए विभिन्न Keys को Output में Return करवा सकते हैं।

current() Function

ये Function Array के उस Element के मान को Return करता है, जिसे Iterator द्वारा Currently Point किया जा रहा है। ये Function Argument के रूप में उस Array को Accept करता है, जिसके Current Element की Value को हम Return करना चाहते हैं।

ये Function भी key() Function की तरह Iterator को अगले Element पर Move नहीं करता। इसलिए अगले Element पर Iterator को Set करने के लिए हमें next() Function को Use करना पडता है। साथ ही जब Iterator Array के सभी Elements पर Move होने के बाद Array की Boundary से बाहर चला जाता है, तब ये Function False Return करता है।

ये Function किसी भी Array के First Element को ही Point करता है, जब तक कि हम next() अथवा prev() Functions का प्रयोग करके Iterator को आगे या पीछे की ओर Move नहीं करते।

इस Function को भी हम पिछले Program की तरह ही while Loop में Use करके Array के सभी Elements की Values को ठीक उसी तरह से Return करवा सकते हैं, जिस तरह से पिछले Program में हमने Array के सभी Elements की Keys को Return करवाया है। जैसेः

<?php
	$name = array(
				'Jaipur'=>'Rajesh', 
				'Bali'=>'Mahesh', 
				'Rani'=>'Suresh', 
				'Pali'=>'Ganesh'
			);
	
	while($values = current($name)){
		print "$key \n";
		next($values);
	}		
?>

//Output
Rajesh
Mahesh
Suresh
Ganesh

each() Function

ये Function Array की Key व Value दोनों को Return करता है साथ ही Iterator को Array के अगले Element पर Move भी कर देता है। इसलिए इस Function को Use करते समय हमें next() Function को Use करने की जरूरत नहीं रहती।

ये Function Array के हर Key=Value Pair को एक Array के रूप में Return करता है। जब इस Function में Specified Array में एक भी Element नहीं बचता जिस पर Iterator Move कर सके, तब ये Function False Return करता है। इस Function को हम निम्नानुसार उपयोग में ले सकते हैं:

<?php
	$name = array(
				'Jaipur'=>'Rajesh', 
				'Bali'=>'Mahesh', 
				'Rani'=>'Suresh', 
				'Pali'=>'Ganesh'
			);
	
	while($keyVal = each($name)){
		print "Key : $keyVal[0]  \t Value : $keyVal[1] \n";
	}
	
	var_dump($keyVal);
?>

//Output
Key : Jaipur     Value : Rajesh
Key : Bali       Value : Mahesh
Key : Rani       Value : Suresh
Key : Pali       Value : Ganesh

next() Function

ये Function Array के Iterator को Array के अगले Element पर Move कर देता है, जिससे Iterator Array के Current Element से अगले Element को Point करने लगता है।

prev() Function

ये Function Array के Iterator को Array के पिछले Element पर Move कर देता है, जिससे Iterator Array के Current Element से पिछले Element को Point करने लगता है।

reset() Function

ये Function Array के Iterator को Array के First Element पर Move कर देता है, जिससे Iterator Array के First Element को Point करने लगता है।

end() Function

ये Function Array के Iterator को Array के Last Element पर Move कर देता है, जिससे Iterator Array के Last Element को Point करने लगता है।

इन Functions को समझने के लिए हम एक Program बना सकते हैं जिसमें Array के विभिन्न Elements की Values को Reverse Order में Output में Display करना है। Program निम्नानुसार हो सकता हैः

<?php
	$name = array(
				'Jaipur'=>'Rajesh', 
				'Bali'=>'Mahesh', 
				'Rani'=>'Suresh', 
				'Pali'=>'Ganesh'
			);
	
	end($name);
	while($value = current($name)){
		print "$value \n";
		prev($name);
	}
?>

//Output
   Ganesh
   Suresh
   Mahesh
   Rajesh

इन Iterator Functions को Use करने का फायदा ये है कि ये Functions foreach Loop की तरह Arrays की Copy Create नहीं करते, जिसकी वजह से Extra Memory Reserve नहीं होती व PHP Script की Performance भी अच्छी रहती है।

जब हम बडे Array के साथ काम करते हैं, जिसमें बहुत ही ज्यादा Data होते हैं, तब foreach Looping Statement के स्थान पर हमें इन Iterator Functions को ही Use करना चाहिए।

PHP in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS