如何foreach 2数组

时间:2019-08-30 14:11:40

标签: php arrays

我使用preg_match_all并获得这样的数组

Array
(
    [1] => Array
        (
            [0] => link1
            [1] => link2
            [2] => link3
            [3] => link4
            [4] => link5
        )

    [3] => Array
        (
            [0] => title1
            [1] => title2
            [2] => title3
            [3] => title4
            [4] => title5
        )

)

我尝试使用array_merge,但这不是我想要的

我想要这样的foreach回报

<a href="link1" class=list-group-item> title1</a>
<a href="link2" class=list-group-item> title2</a>
<a href="link3" class=list-group-item> title3</a>
<a href="link4" class=list-group-item> title4</a>
<a href="link5" class=list-group-item> title5</a>

我该怎么做?

3 个答案:

答案 0 :(得分:6)

首先,重置主阵列的键。

$array = array_values($array);

接下来,循环浏览一组数据,在我的示例中,我将使用第一组数据。在循环内部,您可以使用第一组数据中的键来获取第二组数据。

foreach($array[0] as $key => $href) {
    $title = $array[1][$key];
    echo "<a href='$href' class=list-group-item> $title</a>";
}

仅当您始终收到两组长度相同的数据时,此方法才起作用。


如果出于某种原因不想使用该方法,则可以使用array_shift();

$links = array_shift($array); //grab first set from array, and remove it from array.
$titles = array_shift($array);

foreach($links as $key => $link) {
    $title = $titles[$key];
    echo "<a href='$link' class=list-group-item> $title</a>";
}

答案 1 :(得分:1)

使用这样的构造将两个数组独立于其索引循环在一起

F, C and A

在PHP 7之前,您需要将其重写为foreach(array_map(null, ...$arr) as [$link,$title]) { echo "<a href='$link' class=list-group-item> $title</a>";

答案 2 :(得分:0)



$keys=$array[1];

$values=$array[3];


$combines=array_combine($keys,$values);
foreach($combines as $key=>$value)
{
   echo '<a href="'.$key.'" class=list-group-item> '.$value.'</a>';

}