2010-03-31 14 views
6

में कैसे जोड़ते हैं भाषा PHP है। मेरे पास एक foreach ($ b के रूप में $ b) और एक और foreach ($ c $ d => $ e के रूप में $ c) है। मैं उन्हें एक के रूप में पढ़ने के लिए कैसे जोड़ूं। मैं foreach थक गया ($ $ के रूप में $ बी) & & ($ सी $ d => $ ई) के रूप में, लेकिन यह बकवास है।आप दो foreach loops को एक

उत्तर

0

यह वही करेगा जो आप चाहते हैं। यह आपके लूप में एक ही समय में समान रूप से दोनों सरणी अग्रिम होगा।

foreach($a as $b) 
{ 
    list($d,$e) = each($c); 
    //continue on with $b, $d and $e all set 
} 

each() प्रत्येक यात्रा पर $c की सरणी सूचक आगे बढ़ाएंगे: आप हमेशा break मैन्युअल अगर $c$a तुलना में एक अलग आकार है और आप सरणी आकार के आधार पर तोड़ने तर्क की जरूरत है सकते हैं।

3

मुझे समझ में नहीं आता कि आप क्या करने की कोशिश कर रहे हैं। आप $a और $c से सभी संयोजनों चाहते हैं

foreach ($a as $b) { ... } 
foreach ($c as $d => $e) { ... } 

: आप एक के बाद उन्हें एक पहुंचना चाहते हैं तो सिर्फ दो छोरों का उपयोग

foreach ($a as $b) { 
    foreach ($c as $d => $e) { 
    // do stuff 
    } 
} 

मुझे लगता है कि आप की तरह कुछ कर सकता है:

foreach (array_merge($a, $c) as $k => $v) { 
    ... 
} 

लेकिन मुझे जरूरी नहीं कि वह सलाह दे।

22

आप SPL's MultipleIterator

उदा में रुचि हो सकती

// ArrayIterator is just an example, could be any Iterator. 
$a1 = new ArrayIterator(array(1, 2, 3, 4, 5, 6)); 
$a2 = new ArrayIterator(array(11, 12, 13, 14, 15, 16)); 

$it = new MultipleIterator; 
$it->attachIterator($a1); 
$it->attachIterator($a2); 

foreach($it as $e) { 
    echo $e[0], ' | ', $e[1], "\n"; 
} 

प्रिंट

1 | 11 
2 | 12 
3 | 13 
4 | 14 
5 | 15 
6 | 16 
+0

कोड मैं आज देखा है की सबसे दिलचस्प शांति है कि। इसके लिए एक प्लस। क्या सरणी बराबर लंबाई के होते हैं, या आप किसी बिंदु पर उनमें से केवल एक पर फिर से चलना बंद कर देते हैं? –

+3

यह इस बात पर निर्भर करता है कि आपने एकाधिक इटरेटर :: MIT_NEED_ANY या एकाधिक इटरेटर :: MIT_NEED_ALL ध्वज सेट किया है या नहीं। MIT_NEED_ALL के साथ इटेटरेटर बंद हो जाता है यदि किसी भी आंतरिक इटरेटर्स के पास कोई और तत्व नहीं है। MIT_NEED_ANY के साथ इटेटरेटर तब तक जारी रहता है जब तक कि कम से कम एक आंतरिक इटरेटर के पास कोई अन्य तत्व न हो, अन्य सभी आइटम नल हो जाते हैं। MIT_NEED_ALL डिफ़ॉल्ट है। – VolkerK

+1

जानकारी के लिए धन्यवाद, बहुत अच्छा! –

7

1) सबसे पहले विधि

<?php 
$FirstArray = array('a', 'b', 'c', 'd'); 
$SecondArray = array('1', '2', '3', '4'); 

foreach(array_combine($FirstArray, $SecondArray) as $f => $n) { 
    echo $f.$n; 
    echo "<br/>"; 
} 
?> 

या 2) दूसरी विधि

<?php 
$FirstArray = array('a', 'b', 'c', 'd'); 
$SecondArray = array('1', '2', '3', '4'); 

for ($index = 0 ; $index < count($FirstArray); $index ++) { 
    echo $FirstArray[$index] . $SecondArray[$index]; 
    echo "<br/>"; 
} 
?> 
संबंधित मुद्दे