【问题标题】:How can I implode() a multidimensional array to a string?如何将多维数组内爆()到字符串?
【发布时间】:2014-08-06 22:58:40
【问题描述】:

我正在尝试将这个多维数组内爆成一个字符串:

$smile = Array ( 
    [a] => Array ( [0] => "smile") 
    [b] => Array ( [0] => "cat"   [1] => "dog") 
    [c] => Array ( [0] => "ora"   [1] => "rita") 
    [d] => Array ( [0] => "miley" [1] => "cyrus") 
)

我希望它出现在这样的列表中:

smile, cat, dog, ora, rita, miley, cyrus

我该怎么办?

【问题讨论】:

  • 这很简单,到目前为止你尝试过什么?
  • 我尝试使用 array_shift() 和 array_merge() 将数组作为一个单独的数组,然后用逗号分隔它们,但这不起作用。 :(
  • smile, cat, dog, ora, rita, miley, cyrus 是什么意思?你的意思是初始化一个数组,还是显示数组,还是别的什么?
  • @Lemony-Andrew 我的意思是:这个数组中的值将作为逗号分隔列表放入另一个 say 变量中
  • 哦,为了将来参考说字符串。查找变量类型,它将帮助您更好地回答人们可以更好地回答的问题。字符串是" "' ' 之间的任何内容,但单引号通常用于字符声明。

标签: php arrays string multidimensional-array


【解决方案1】:

如果数组没有嵌套其他级别的数组,我将首先使用单个 for 循环内爆所有嵌套数组,然后内爆。像这样:

for ($i = 0; $i < count($smile); $i++){
    if (is_array($smile[$i])){
        $smile[$i] = implode($smile[$i], ',');
    }
}

$result = implode($smile, ',');

如果您不知道可以嵌套多少层,可以使用递归。例如,这样的事情应该可以工作:

function collapse($array, $glue = ','){
    for ($i = 0; $i < count($array); $i++){
        if (is_array($array[$i])){
            $array[$i] = collapse($array[$i], $glue);
        }
    }

    return implode($array, $glue);
}

$imploded = collapse($smile, ',');

【讨论】:

  • 谢谢克劳迪奥。你帮了我很多。我欠你很多时间.. :D
  • IMO,无论你是否知道关卡,递归都是必经之路。最终结果是一个对以后的项目通常有用的函数。但是,我倾向于使用 foreach 而不是 for ($i ... ; $i
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 2022-01-01
  • 2011-07-12
  • 2016-03-27
  • 1970-01-01
  • 2011-04-23
  • 2020-09-06
相关资源
最近更新 更多