2010-11-11 26 views
28

mümkün mü (doğru sözdizimi kullanmaz olan) aşağıdaki benzer "endeks" değişkenler çoklu PHP ile bir foreach döngü var mı?Çoklu endeks değişkenleri

foreach ($courses as $course, $sections as $section) 

Değilse, aynı sonucu elde etmek için iyi bir yol var mı?

Elbette
foreach($courses as $course) 
{ 
    foreach($sections as $section) 
    { 
    } 
} 

, bu irade: Böyle iç içe döngüler kullanmak gerekir

for($i=0, $count = count($courses);$i<$count;$i++) { 
$course = $courses[$i]; 
$section = $sections[$i]; 
} 
+0

Netleştirmek isteyebilirsiniz. Bir 2B dizi veya 2 diziler arasında geçiş yapmaya mı çalışıyorsunuz? – Jere

+1

bunların nasıl olacağı emin değil misiniz? Ne yaptığını biraz daha açıklayabilir misin? Yuvalanmış bir foreach'ınız olabilir veya diziyi yineleme öncesinde birleştirebilirsiniz.Ne yapmaya çalıştığınızı bize bildirin ve size yardımcı olabiliriz. –

cevap

40

Eğer

foreach (array_combine($courses, $sections) as $course => $section) 

yapabileceği sadece bu sonucu elde ancak iki dizide

böyle
+4

Not; '$ courses' nesneler ise, bu işe yaramaz. – Dan

+4

Not; "$ courses" sayısal dizeler ise, tamsayılara dönüşeceklerdir. – hakre

+0

Umarım çok ölü olan bir iş parçacığını çalıştırmayacağım. Ama, aynı şeyi elde etmeye çalışıyorum, bir anlığına aldım, ama işe yaramadığını düşünmüyorum, ama yapmadı, ama yaşamım için koyduğum kodu hatırlayamıyorum. kategoriye ve değere sahip olmaya çalışmak veritabanına giriyor. \t foreach ($ _ POST ['category'] $ i => $ kategorisi olarak) \t { \t // Postadan değerler alın. \t $ category = mysql_real_escape_string ($ category); \t $ value = mysql_real_escape_string ($ _ POST ['value'] [$ i]); – Spartacus38

12

siz bir for döngü kullanabilirsiniz Her kurs için her bölümün üzerinde döngü.

her çifti bakmak isterseniz, kurs/bölüm çifti içeriyor ya nesneleri kullanarak ve bu üzerinde döngü veya dizinlerini aynı emin ve yapıyor kapalı iyidir:

foreach($courses as $key => $course) 
{ 
    $section = $sections[$key]; 
} 
4

: Her iki diziler aynı boyutta ise

1

Tam olarak ne yapardı? $courses ve $sections sadece iki ayrı diziler vardır ve her birinde değerleri için aynı işlevi yerine ister misin? Her zaman yapabilirdi:

foreach(array_merge($courses, $sections) as $thing) { ... } 

Bu her zamanki varsayımlar array_merge hakkında elbette yapar.

Ya da $sections$course dan geliyor ve her ders için her bölüm için bir şeyler yapmak ister misiniz?

foreach($courses as $course) { 
    foreach($sections as $section) { 
     // Here ya go 
    } 
} 
0

için çalışır buna?

foreach($array as $b=>$c){ 

} 
2

Hayır, çünkü bu diziler başka sayıda öğeye sahip olabilir.

Sen explicitely böyle bir şey yazmak gerekir:

for ($i = 0; $i < count($courses) && $i < count($sections); ++$i) { 
    $course = $courses[$i]; 
    $section = $sections[$i]; 

    //here the code you wanted before 
} 
+1

farklı değeri varsa, '$ i zzzzBov

+1

Yüksek yük altında çalışan çok büyük projelerle çalışıyorum ve genellikle tek bir SQL sorgusu php sayısından 1000 daha yavaş olduğu için gerçekten önemli değil :). Ve çok büyük diziler ile çalışmak zorunda iseniz o zaman uygulama tasarımı ile yanlış bir şey var. – Daimon

2

Hayır, bu PHP'nin dizi imleçleri yararlıdır belki nadir durumlarda biridir:

reset($sections); 
foreach ($courses as $course) 
{ 
list($section) = each($sections); 
} 
3

TL -

1)

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

foreach($FirstArray as $index => $value) { 
    echo $FirstArray[$index].$SecondArray[$index]; 
    echo "<br/>"; 
} 
?> 

veya 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/>"; 
} 
?> 
İlgili konular