[英]How to break a PHP multidimensional array?
说我有这个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/>';
}
}
我认为您过于复杂了。 为什么不仅仅在外部数组上循环并向内部数组内爆?
<?php
$tour_from = [
['Dhaka', 'Noakhali'],
['Chittagong', 'Sylhet'],
];
foreach ($tour_from as $elem) {
print implode(' - ', $elem);
print '<br>';
}
不需要分块或第二个循环。
一个包含implode()的循环将起作用 。
代码:( 演示 )
$tour_from = [
['Dhaka', 'Noakhali'],
['Chittagong', 'Sylhet']
];
foreach ($tour_from as $row) {
echo implode(' - ', $row), "\n";
}
输出:
Dhaka - Noakhali
Chittagong - Sylhet
或者,如果您喜欢实用的单线:( 演示 )
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];
});
如果要避免使用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)
后缀之类的操作。
哦,是的,我找到了方法:
foreach ($tour_from as $key => $value) {
$chunk = array_chunk($value, 2);
foreach ($chunk as $key1 => $value1) {
echo implode(' - ', $value1);
echo '<br/>';
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.