首页 > 解决方案 > 如何解决在php的嵌套foreach循环中重置变量

问题描述

我有已转换为数组的字符串,但想将它们显示在列表中。如何重置循环以避免重复?

我尝试将变量设置为空白,这通常适用于单个 foreach 语句

$SEAT = "1A,4A";
$NAME = "John Doe, Jane Doe";
$PHONE_NUMBER = "123456856,1235668";


$SEAT_USSD_STRING_VALUE = explode(",", $SEAT);
$NAME_USSD_STRING_VALUE = explode(",", $NAME);
$PHONE_USSD_STRING_VALUE = explode(",", $PHONE_NUMBER);

$seat_value = "";
foreach ($SEAT_USSD_STRING_VALUE as $seat_key => $seat_value) {
    $name_value = "";
    foreach ($NAME_USSD_STRING_VALUE as $name_key => $name_value) {
        $phone_number_value = "";
        foreach ($PHONE_USSD_STRING_VALUE as $phone_number_key => $phone_number_value) {
            echo "$seat_value: $name_value - $phone_number_value<br/>";
        }
    }
}

我期待得到

1A: John Doe - 12345678
4A: Jane Doe - 87654321

但我得到了这个

1A: John Doe - 12345678
1A: John Doe - 87654321
1A: Jane Doe - 12345678
1A: Jane Doe - 87654321
4A: John Doe - 12345678
4A: John Doe - 87654321
4A: Jane Doe - 12345678
4A: Jane Doe - 87654321

标签: phploopsforeach

解决方案


您可以这样做,假设您的 3 个数组中的元素数量始终相同:

<?php

$SEAT = "1A,4A";
$NAME = "John Doe, Jane Doe";
$PHONE_NUMBER = "123456856,1235668";

$SEAT_USSD_STRING_VALUE = explode(",", $SEAT);
$NAME_USSD_STRING_VALUE = explode(",", $NAME);
$PHONE_USSD_STRING_VALUE = explode(",", $PHONE_NUMBER);

$seat_value = "";
foreach ($SEAT_USSD_STRING_VALUE as $seat_index => $seat_value) {
    $name_value = $NAME_USSD_STRING_VALUE[$seat_index];
    $phone_value = $PHONE_USSD_STRING_VALUE[$seat_index];
    echo "$seat_value: $name_value - $phone_value<br/>";
}

在这种情况下,您始终可以引用其他数组中位于同一索引上的项目。

这将如下工作:我们在座位数组循环中的索引 0 处,然后名称将是名称数组的 0 索引元素,而电话将是电话数组的 0 索引元素。


推荐阅读