说我有这个PHP array()
$ tour_from数组
Array
(
[0] => Array
(
[0] => Dhaka
[1] => noakhali
)
[1] => Array
(
[0] => Chittagong
[1] => Sylhet
)
)
我想要这样:
达卡-诺哈里省
吉大港-锡尔赫特省
我该怎么做?
我使用了此方法,但这是错误的方法:
foreach ($tour_from as $key => $value) {
$chunk = array_chunk($value, 2);
foreach ($chunk as $key1 => $value1) {
echo $value1[$key][$key1] . ' - ' . $chunk[$key][$key1];
echo '<br/>';
}
}
答案 0 :(得分:2)
我认为您过于复杂了。为什么不只是在外部数组上循环并向内部数组内爆?
<?php
$tour_from = [
['Dhaka', 'Noakhali'],
['Chittagong', 'Sylhet'],
];
foreach ($tour_from as $elem) {
print implode(' - ', $elem);
print '<br>';
}
答案 1 :(得分:2)
不需要分块或第二个循环。
一个包含implode()的循环即可。
代码:(Demo)
$tour_from = [
['Dhaka', 'Noakhali'],
['Chittagong', 'Sylhet']
];
foreach ($tour_from as $row) {
echo implode(' - ', $row), "\n";
}
输出:
Dhaka - Noakhali
Chittagong - Sylhet
或者,如果您喜欢功能性的一线客机:(Demo)
echo implode("<br>", array_map(function($row){ return implode(' - ', $row); }, $tour_from));
*这样做的好处是最终内含字符串上没有结尾<br>
。
或者使用更少的函数调用,这是带有array_reduce()
的版本:(Demo)
echo array_reduce($tour_from, function($carry, $row) {
return $carry .= ($carry !== null ? "<br>\n" : '') . $row[0] . ' - ' . $row[1];
});
答案 2 :(得分:0)
如果要避免使用foreach
,可以对array_walk
做同样的事情,并通过引用&$var
进行传递。
$array = [
["Dhaka", "noakhali"],
["Chittagong", "Sylhet"]
];
array_walk($array, function(&$item){
$item = implode(' - ', $item);
});
print_r($array);
输出:
Array
(
[0] => Dhaka - noakhali
[1] => Chittagong - Sylhet
)
如果您要输出而不是修改数组,则可以直接回显它,或执行类似implode('<br>', $array)
后缀的操作。
答案 3 :(得分:-1)
哦,是的,我找到了方法:
foreach ($tour_from as $key => $value) {
$chunk = array_chunk($value, 2);
foreach ($chunk as $key1 => $value1) {
echo implode(' - ', $value1);
echo '<br/>';
}
}