亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何一次循環兩個數組?

如何一次循環兩個數組?

PHP
Cats萌萌 2019-08-05 15:28:18
如何一次循環兩個數組?我試圖將兩個數組排列在一起,結果不一致。我會告訴你我的代碼,我得到的結果以及我正在尋找的結果。我想我只是做錯了但不知道怎么做。我的代碼:$data1 = [    'a: 1',    'a: 2',    'a: 3',    'a: 4',    'a: 5'];$data2 = [    'b: 1',    'b: 2',    'b: 3',    'b: 4',    'b: 5'];foreach($data1 as $item1){    foreach($data2 as $item2)    {        echo $item1 . '<br/>';        echo $item2 . '<br/>';        echo '<br/><br/>';    }}結果:(縮短以節省空間)a: 1b: 1a: 1b: 2a: 1b: 3a: 1b: 4a: 1b: 5我正在尋找的結果如下:a: 1b: 1a: 2b: 2a: 3b: 3a: 4b: 4a: 5b: 5
查看完整描述

2 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

使用1中的鍵獲取2中的行

foreach($data1 as $k=> $item1){
        echo $item1 . '<br/>';
        echo $data2[$k] . '<br/>';
        echo '<br/><br/>';}


查看完整回答
1 反對 回復 2019-08-05
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

問題

那么問題當然是你的嵌套foreach循環。因為對于$data1數組的每個元素,你遍歷整個$data2數組(所以總共有$data1$data2迭代)。


解決方案

要解決這個問題,您必須立即遍歷兩個數組。

array_map()方法(PHP> = 5.3)

您可以使用array_map()并將所有數組傳遞給它,同時將它循環到它。

array_map(function($v1, $v2){
    echo $v1 . "<br>";
    echo $v2 . "<br><br>";}, $data1, $data2 /* , Add more arrays if needed manually */);

注意:如果元素數量不均勻,您將不會產生任何錯誤,它只會打印NULL(意味著您將看不到任何內容)

MultipleIterator方法(PHP> = 5.3)

使用MultipleIterator連接盡可能多的ArrayIterator,因為你需要。

$it = new MultipleIterator();$it->attachIterator(new ArrayIterator($data1));$it->attachIterator(new ArrayIterator($data2));//Add more arrays if needed foreach($it as $a) {
    echo $a[0] . "<br>";
    echo $a[1] . "<br><br>";}

注意:如果元素數量不均勻,它將只打印兩個數組仍具有值的所有值

for loop方法(PHP> = 4.3)

使用帶有計數器變量的for循環,您可以將其用作兩個數組的鍵。

$keysOne = array_keys($data1);$keysTwo = array_keys($data2);$min = min(count($data1), count($data2));for($i = 0; $i < $min; $i++) {
    echo $data1[$keysOne[$i]] . "<br>";
    echo $data2[$keysTwo[$i]] . "<br><br>";}

注意:使用array_keys()就是如此,如果陣列不具有相同的鍵或具有關聯性,這也適用。min()用于僅循環遍歷每個數組所具有的元素

array_combine()方法(PHP> = 5.0)

或者,如果數組只有唯一值,則可以array_combine()同時使用這兩個數組,以便$data1可以作為鍵和$data2值進行訪問。

foreach(array_combine($data1, $data2) as $d1 => $d2) {
    echo $d1 . "<br>";
    echo $d2 . "<br><br>";}

注意:數組必須具有相同數量的元素,否則array_combine()將引發錯誤

call_user_func_array()方法(PHP> = 5.6)

如果要同時打印2個以上的數組或只打印未知數量的數組,可以將該array_map()方法與call_user_func_array()調用結合使用。

$func = function(...$numbers){
    foreach($numbers as $v)
        echo $v . "<br>";
    echo "<br>";};call_user_func_array("array_map", [$func, $data1, $data2]);

注意:由于這種array_map()方法使用的方法,它的行為與元素數量不均勻的行為相同。此外,由于這種方法只適用于PHP> = 5.6你可以刪除參數,改變了$numbersfunc_get_args()在foreach循環,然后它也適用于PHP> = 5.3


查看完整回答
反對 回復 2019-08-05
  • 2 回答
  • 0 關注
  • 1374 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號