繁体   English   中英

如何打破一个PHP多维数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM