2010-07-26 71 views
4

這第一個代碼塊按預期工作。這是一個foreach來打印來自$fnames鍵值數組的值。沒有嵌套的多個foreach

foreach($fnames as $fname){ 
    echo $fname; 
} 

$fnames陣列有一個$lnames陣列對應於它,我想打印與FNAME將lname在同一時間,像這樣:但它不會編譯

foreach($fnames as $fname && $lnames as $lname){ 
    echo $fname . " " . $lname; 
} 

我也試過這個,但是也沒有編譯。

foreach($fnames,$lnames as $fname,$lname){ 
    echo $fname . " " . $lname; 
} 

唯一編譯的是這個,但它沒有給出正確的結果。

foreach($fnames as $fname){ 
    foreach($lnames as $lnames){ 
     echo $fname . " " . $lname; 
    } 
} 

如何在同一索引處的2個數組之間進行這種配對?

回答

9
foreach($fnames as $key => $fname){ 
    echo $fname.' '.$lnames[$key]; 
} 
+3

應該是,因爲在陣列中的鍵匹配。 – 2010-07-26 22:51:57

5

另一種選擇是:

foreach(array_map(null,$fnames,$lnames) as $name){ 
    echo $name[0].' '.$name[1]; 
} 
+0

巧妙的把戲,我必須記住這一技巧 – 2010-07-27 07:56:31

2

如果你不想在陣列組合,你真正需要同時運行兩臺發電機。 Fortuantely,PHP有一個這樣做與數組的方式。雖然這有點老派。

reset($fnames); 
reset($lnames); 
do { 
    print current($fnames).' '.current($lnames)."\n"; 
} while(next($fnames) && next($lnames)); 

雖然這是一個稍微有點人爲的例子,但它仍然是一個有用的技術知道。