2012-04-12 5 views
8

जैसा कि in this other answer देखा गया है, दो समान आकार के सरणी को एक साथ फिर से करने के कई तरीके हैं; हालांकि, सभी विधियों में एक महत्वपूर्ण गड़बड़ी है। सुझाए गए तरीकों के साथ यहां कुछ चेतावनी दी गई हैं:PHP: दो समांतर सरणी को फिर से चलाने का सबसे अच्छा तरीका?

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

मेरा प्रश्न है - वहाँ इस जो इन (या अन्य) महत्वपूर्ण चेतावनियां में से किसी से ग्रस्त नहीं करने के लिए एक विधि है?

ध्यान रखें कि मैं बस जिज्ञासा से यह पूछ रहा हूं; मेरे पास कोई उपयोग-मामला नहीं है, और न ही मुझे यह भी पता है कि ऐसा कोई मामला वास्तव में मौजूद है या वास्तविक दुनिया परिदृश्य में उपयोगी/व्यावहारिक होगा।

$arr1 = [ 'a' => 1, 'b' => FALSE, 'c' => new DateTime() ]; 
$arr2 = [ 'foo', TRUE, 7 ]; 
+0

क्या उस प्रश्न का beefsack के जवाब के साथ गलत क्या है? ऐसा लगता है कि यह सरणी की सामग्री या संरचना के बावजूद काम करेगा। – nickb

+0

यह काम नहीं करेगा क्योंकि '' बी '=> FALSE' @nickb – Baba

+0

@ बाबा - नहीं, [यह' बी '=> झूठी' के साथ काम करता है] (http://codepad.viper-7.com/nNZuNj)। – nickb

उत्तर

21

आप उपयोग कर सकते हैं एक MultipleIterator:

$iterator = new MultipleIterator; 
$iterator->attachIterator(new ArrayIterator($array1)); 
$iterator->attachIterator(new ArrayIterator($array2)); 

foreach ($iterator as $values) { 
    var_dump($values[0], $values[1]); 
} 

आप विभिन्न विकल्पों in the docs के विषय में अधिक उदाहरण मिल सकते हैं हालांकि, यहां कुछ उदाहरण डेटा है।

+0

तो साफ करें। +1 :) – AlienWebguy

+0

+1 मुझे पता था कि एक बेहतर तरीका होना चाहिए था। मुझे कुछ सिखाने के लिए धन्यवाद :-) – FtDRbwLXw6

1
<?php 

$arr1 = array('a' => 1, 'b' => FALSE, 'c' => new DateTime()); 
$arr2 = array('foo', TRUE, 7, 5); 


reset($arr1); 
reset($arr2);  

while ((list($key, $val) = each($arr1)) 
    && (list($key2, $val2) = each($arr2)) 
) { 
    var_dump($val,$val2); 
    // or whatever you wanted to do with them 
} 

http://www.php.net/manual/en/function.each.php

+1

आपकी स्क्रिप्ट में त्रुटि है और यदि $ arr2'> '$ arr1' में कुल सरणी नहीं है तो यह काम नहीं करेगा ... – Baba

+0

@ बाबा मुझे एक सर्वर मिल गया था परीक्षण, क्योंकि मैंने वास्तव में पहली बार इसका परीक्षण नहीं किया था। यह सरणी की लंबाई (जो मैं बता सकता था उससे) में कोई समस्या नहीं थी, लेकिन समस्याएं थीं (जैसे मेरे पास परीक्षण किए गए सर्वर पर 5.4 नहीं है), इसलिए इसे इंगित करने के लिए धन्यवाद। – craniumonempty

संबंधित मुद्दे