如何合并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
缺少的步骤是什么?
答案 0 :(得分:2)
您可以使用简单的foreach
循环和array_merge
合并两个子数组。
<?php
$result = [];
foreach($array_1 as $index => $val){
$result[] = array_merge($val,$array_2[$index]);
}
print_r($result);
答案 1 :(得分:0)
使用循环合并并转置数组数据,然后使用另一个循环打印到屏幕是间接编程。
理想情况下,如果可能,您应该尝试在代码中更早地合并这些结构(我不知道这些数据集来自何处,所以我不建议。)
否则,请不要合并两个数组,而只需编写一个循环即可打印到屏幕上。因为期望这两个数组通过它们的索引相互关联,所以没有产生Notices的风险。
自从我键入此内容后,我将借此机会揭示一些有用的技巧:
foreach()
中目标变量的静态键的数组语法来解包单元素子数组。printf()
有助于减少由于级联/插值而引起的行肿胀/混淆。通过将占位符(%s
)写入字符串,然后在尾随参数中传递这些占位符的值,通常可以提高可读性。代码:(Demo)
$sites = [['title' => 'Google'], ['title' => 'Bing']];
$links = [['link' => 'www.example1.com'], ['link' => 'www.example2.com']];
foreach ($sites as $index => ['title' => $title]) {
printf(
'%s - <a href="%s">See website</a></br>',
$title,
$links[$index]['link']
);
}
输出:
Google - <a href="www.example1.com">See website</a></br>
Bing - <a href="www.example2.com">See website</a></br>