2014-10-10 16 views
11

मैं दुविधा का एक सा है, PHP में दोनों foreach पाश और जब तक पाश इस स्थिति में बिल्कुल वही बात करने के लिए लग रहे हैं:foreach पाश बनाम पाश परिणाम जबकि

foreach($execute->result as $item){ 
    echo $item['user_pass'].'<br />'; 
} 

और

while($row = mysqli_fetch_assoc($execute->result)){ 
    echo $row['user_pass'].'<br />'; 
} 

मेरा सवाल है क्या कोई वास्तविक अंतर है ...? एक दूसरे के ऊपर उपयोग करने के लिए बेहतर होगा या दोनों का उपयोग करना ठीक है ....? क्या इनमें से कोई भी आपको संभावित रूप से अधिक क्षमता प्रदान करता है ...?

+0

सुनिश्चित नहीं है, मैं हमेशा डेटाबेस के लिए थोड़ी देर लूप का उपयोग करता हूं – boomoto

+1

मुझे नहीं लगता कि यह प्रश्न पोस्ट किए गए एक का डुप्लिकेट है, हालांकि। – Qualcuno

+0

@Qualcuno दरअसल, आप सही तरह से हैं। Http://stackoverflow.com/questions/3304885/whilelistkey-value-eacharray-vs-foreacharray-as-key-value का डुप्लिकेट जैसा कि आप अपने उत्तर में '(ट्रैवर्सबल) 'का उल्लेख करते हैं। यदि ओपी इसे फिर से खोलना चाहता है, तो वह इसे लड़ सकता है। –

उत्तर

2

इस मामले में वे बिल्कुल बराबर हैं। mysqli_resultTraversable इंटरफ़ेस लागू करता है (जैसा कि यहां लिखा गया है: http://www.php.net/mysqli_result) इसलिए इसे foreach लूप का उपयोग करके पुनरावृत्त किया जा सकता है।

मुझे लगता है कि, आंतरिक रूप से, foreach पर mysqli_result ऑब्जेक्ट पर कॉल करने से mysqli_fetch_assoc पर भी कॉल किया जाता है।

मुझे नहीं लगता कि यह पहली विधि या दूसरे का उपयोग करने में कोई फर्क पड़ता है; हालांकि, पहला व्यक्ति सुंदर दिखता है और मुझे "अधिक PHP5" लगता है!
लचीलापन की बात करते हुए, पहला निश्चित रूप से अधिक लचीला है, क्योंकि आप उस कोड का उपयोग किसी भी ऑब्जेक्ट के साथ कर सकते हैं जो Traversable लागू करता है और न केवल mysqli_result

+0

दार्शनिक रूप से, यह सूची तत्वों पर फिर से शुरू करने के लिए क्लीनर लगता है, फिर यह जांचने के लिए कि क्या हम सूची के अंत में हैं और फिर अगले तत्व पर फिर से चलते हैं, इसलिए मैं सहमत हूं। –

0

मैं इस पाया:

for vs foreach vs while which is faster for iterating through arrays in php

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

मुझे लौटाई गई जानकारी पर पुनरावृत्ति करने के लिए फ़ोरैच लूप का उपयोग करना पसंद है क्योंकि मेरे पास कुंजी और मानों तक पहुंच है, जो आवश्यक उपयोग के आधार पर आसान हो सकती है।

$returned = array(array("userName" => "Tim"),array("userName" => "Bob"), array("userName" => "Guy")); 

foreach($returned as $L1) 
{ 
    foreach($L1 as $L2 => $val) 
    { 
     if($L2 === "userName") 
     { 

     echo 'Hello: ' . $val . "<br />"; 

     } 

    } 

} 

मुझे लगता है कि यह इस बात पर निर्भर करता है कि आपको किस मूल्य की आवश्यकता है, आपको कितना नियंत्रण चाहिए, और आपको इसकी आवश्यकता है।

+1

यह '''' और 'प्रत्येक' –

+0

से अलग कैसे है, मैं बस इतना कह रहा था कि मैं क्या उपयोग करना चाहता हूं और गतिशीलता पर एक और पोस्ट की पेशकश करता हूं। एक गाय नहीं है, लॉल। – user2296112