使用implode时,数组到字符串转换错误

时间:2014-09-19 08:39:34

标签: php arrays string implode

我对我正在陈述Array to string conversion

的错误感到困惑

我感到困惑的原因是我试图做到这一点,使用implode将数组转换为字符串,根据手册应该允许我将数组转换为串。那么为什么我会收到错误?

var $matches是一个数组。 $error_c是我想要存储字符串的var。

print_r($matches); // prints the array correctly
$error_c = implode(',', $matches);
echo $error_c;

只输出array并给出:

Notice: Array to string conversion in ...

手册说明implode — Join array elements with a string所以当我尝试这样做时为什么会出错?

编辑:这是我从$matches

获得的输出
Array ( [0] => Array ( [0] => C [1] => E [2] => R [3] => R [4] => O [5] => R [6] => C [7] => O [8] => N [9] => T [10] => A [11] => C [12] => T [13] => S [14] => U [15] => P [16] => P [17] => R [18] => E [19] => S [20] => S [21] => E [22] => D ) ) 

6 个答案:

答案 0 :(得分:29)

你有一个数组数组......试试这个:

$error_c = implode(',', $matches[0]);

答案 1 :(得分:8)

$error_c = implode(',', $matches[0]);
echo $error_c;

因为您的array包含arrays

答案 2 :(得分:1)

那样做:

print_r($matches); // prints the array correctly
$error_c = implode(',', $matches[0]);
echo $error_c;

答案 3 :(得分:0)

要将数组中的任何数据放入字符串中,请尝试使用

function whatever_to_string($in){
    ob_start();
    print_r($in);
    return ob_get_clean();
    }

'ob_ *'函数控制输出缓冲区。

http://php.net/manual/en/function.ob-start.php

http://php.net/manual/en/function.ob-get-clean.php

答案 4 :(得分:0)

您可以将array_values()用于数组数组

例如implode (",", array_values($array))

答案 5 :(得分:0)

该问题是由于您在二维的implode上调用了Array

Array ( 
    [0] => Array ( 
        [0] => C 
        [1] => E 
        [2] => R 
        [3] => R 
        [4] => O 
        [5] => R 
        [6] => C 
        [7] => O 
        [8] => N 
        [9] => T 
        [10] => A 
        // ...
    ) 
) 

等效于

[["C", "E", "R", "R", "O", "R", "C", "O", "N", "..." ]]

执行内爆之前,您应该做的是将数组展平,然后可以使用展平的数组调用implode,或者仅对主数组中的第一项(即数组)调用内爆。 / p>

这里是一个问题,可为扁平化阵列提供指导 How to Flatten a Multidimensional Array?

使用允许展平数组的功能,您可以像这样执行调用

implode(flatten($array_of_data), $matches);

无论$matches数组中有多少项目,都不需要访问第一项,flatten函数将返回一个一维数组,您可以在其上调用implode