Php 多维数组到字符串的转换

Php 多维数组到字符串的转换,php,arrays,string,type-conversion,Php,Arrays,String,Type Conversion,我有一个动态多维数组,我想把它转换成字符串。 以下是一个例子: Array ( [data] => check [test1] => Array ( [data] => Hello ) [test2] => Array ( [data] => world ) [test3] => Array ( [data] => bar [tst] =>

我有一个动态多维数组,我想把它转换成字符串。 以下是一个例子:

Array
(
[data] => check
[test1] => Array
    (
        [data] => Hello
    )

[test2] => Array
    (
        [data] => world
    )

[test3] => Array
    (
        [data] => bar
        [tst] => Array
            (
                [data] => Lorem
                [bar] => Array
                    (
                        [data] => doller
                        [foo] => Array
                            (
                                [data] => sit
                            )

                    )

            )

    )

[test4] => Array
    (
        [data] => HELLO
        [tst] => Array
            (
                [data] => ipsum
                [bar] => Array
                    (
                        [data] => Lorem
                    )

            )

    )

)
字符串的示例是:

 check&hello&world&bar...lorem&doller...sit ....
我试过很多东西。我甚至检查了其他SO问题的答案。比如: &
但是运气不好。

php有一些内置函数可以做到这一点。与var_dump、json_编码和var_导出类似。但是如果你想控制更多的输出,可以使用递归函数

function arrToStr(array $data)
{
    $str = "";
    foreach ($data as $val) {
        if (is_array($val)) {
            $str .= arrToStr($val);
        } else {
            $str .= $val;
        }
    }

    return $str;
}

您可以随意设置额外的换行符和空格的格式。

首先通过

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($input_array));
$flat = iterator_to_array($it, false);
false
防止数组键冲突

然后使用内爆

$str = implode('&', $flat);

您可以简单地使用
array\u walk\u recursive
如下

$result = [];
array_walk_recursive($arr, function($v) use (&$result) {
    $result[] = $v;
});
echo implode('&', $result);

您可以使用以下递归函数将任何多维数组转换为字符串

 public function _convertToString($data,&$converted){
    foreach($data as $key => $value){
        if(is_array($value)){
                $this->_convertToString($value,$converted);

        }else{
            $converted .= '&'. $value;
        }
    }
}
您可以通过以下方式调用上述函数:

   $str = array(
      "data" => "check",
        "test1" => array(
          "data" => "Hello",
            "test3" => array(
                "data" => "satish"
            )
        ),
        "test2" => array(
            "data" => "world"
        )
    );

    $converted = "";

    //call your function and pass your array and reference string
    $this->_convertToString($str,$converted);

    echo $converted;
输出如下:

check&Hello&satish&world
您可以修改代码以满足您的需求


如果需要进一步的帮助,请告诉我。

我会对这种类型的数组使用递归:

echo visit($your_array);

function visit($val){
    if( !is_array($val) ){
        return $val;
    }
    $out="";
    foreach($val as $v){
       $out.= "&".visit($v);
    }
    return $out;
}

是否要在单个字符串中转换整个数组?你能为它添加一个例子吗?你有没有试过
$var=print\r($myArray,true)?@htmlhell,他给出的上述代码看起来像是print\u r的输出。print\u r($myArray)将如何帮助转换字符串中的整个数组?@SatishSojitra我已经编辑了我的评论。@Uchiha这是
json\u decode
Dang的输出,这就是我要说的……快告诉我!