猿问

如何将两个数组合并为一个并转置结构以简化循环打印

我怎样才能组合2个数组...:


$array_1 = [['title' => 'Google'], ['title' => 'Bing']];


$array_2 = [['link' => 'www.example1.com'], ['link' => 'www.example2.com']];

为了得到 ... :


$array_3 = [

    ['title' => 'Google', 'link' => 'www.example1.com'],

    ['title' => 'Bing', 'link' => 'www.example2.com']

];

我想$array_3应该按以下方式构建才能得到:


最后结果:


Google - See website


Bing - See website

得到最终结果的函数:


function site_and_link($array_3) {

    foreach ($array_3 as $a) {

        echo $a['title'] . " - <a href=" . $a['link'] . ">See website</a></br>";

    }

}

缺少什么安排步骤$array_3?


泛舟湖上清波郎朗
浏览 78回答 2
2回答

烙印99

您可以使用一个简单的foreach循环array_merge来合并两个子数组。<?php$result = [];foreach($array_1 as $index => $val){  $result[] = array_merge($val,$array_2[$index]);}print_r($result);

红颜莎娜

使用循环合并转置数组数据,然后使用另一个循环打印到屏幕是间接编程。理想情况下,如果可能的话,您应该尝试在代码的早期合并这些结构(我不知道这些数据集来自哪里,所以我无法提供建议。)否则,保持两个数组不合并,只编写一个循环来打印到屏幕上。由于两个数组预计通过索引相互关联,因此不会有生成通知的风险。既然我正在写这篇文章,我将借此机会透露一些有用的技巧:您可以使用数组语法来解压单元素子数组,其中静态键指向foreach().使用printf()可以帮助减少由串联/插值引起的在线膨胀/混淆。通过将占位符 (&nbsp;%s) 写入字符串,然后在尾随参数中传递这些占位符的值,通常可以提高可读性。代码:(演示)$sites = [['title' => 'Google'], ['title' => 'Bing']];$links = [['link' => 'www.example1.com'], ['link' => 'www.example2.com']];foreach ($sites as $index => ['title' => $title]) {&nbsp; &nbsp; printf(&nbsp; &nbsp; &nbsp; &nbsp; '%s - <a href="%s">See website</a></br>',&nbsp; &nbsp; &nbsp; &nbsp; $title,&nbsp; &nbsp; &nbsp; &nbsp; $links[$index]['link']&nbsp; &nbsp; );}输出:Google - <a href="www.example1.com">See website</a></br>Bing - <a href="www.example2.com">See website</a></br>
随时随地看视频慕课网APP
我要回答