【PHP】一维数据转字符串,多维数组转字符串,保留键和值

一、一维数组转字符串

比较简单,遍历一次就取到了

/**
 * 一维数组转字符串
 * @param $array
 * @return string
 */
function arr2str($array)
{
    //static变量:不会被销毁保留上次值
    static $list = [];
    if (is_array($array)) {
        foreach ($array as $key => $value) {
            $list[] = sprintf("%s => %s, ", $key, $value);
        }
    }
    return join("", $list);
}

输出:
echo arr2str($arr);

B39 => Innisfree, C39 => TOWA, O11 => SANKO, P26 => 顺顺儿, S52 => 思诗乐, H17 => Zab-szele , L40 => Salus, D34 => Ritz , A30 => Happy Baby, C40 => Natura Siberica, 
R19 => Flora, B40 =>  Dr Jacobs, O12 => SecretKey, W05 => EsteeLauder, C41 => Babyganics, M49 => Babyganics, M50 => 膳魔师Thermos, M51 => 象印, 

二、多维数组转字符串

使用递归处理,可以提取主要信息转成字符串。但是从输出结果看,并不算完美

/**
 * 多维数组转字符串
 * @param $array
 * @param string $keys
 * @return string
 */
function multi2str($array, $keys = '')
{
    //static变量:不会被销毁保留上次值
    static $list = [];
    if (is_array($array)) {
        foreach ($array as $key => $value) {
            if ($value == "" || empty($value)) {
                $list[] = sprintf("%s => %s, ", $key, "");
            } else {
                // 二维数组保存父元素的key
                if (is_array($value) && !empty($value)) {
                    $list[$key] = '[';
                }
                multi2str($value, $key);
            }
        }
    } else {
        $list[] = sprintf("%s => %s, ", $keys, $array);
    }
    return join("", $list);
}

echo multi2str($multi );
输出结果:

/api/v2/product/1 => , id => 1, server => 1, remark => 备注, user => 1, dep_id => 22, 
expect_user => , [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, stop_time => 1570602767, 

三、终极解决方法

把数组转成json再转成字符串,使用正则删除不需要的符号!完美~

function json2str($arr)
{
    $str = str_replace(['{', '"', '}'], ['', '', ''], json_encode($arr, JSON_UNESCAPED_UNICODE));
    return $str;
}

输出:
echo json2str($arr);

B39:Innisfree,C39:TOWA,O11:SANKO,P26:顺顺儿,S52:思诗乐,H17:Zab-szele ,L40:Salus,D34:Ritz ,A30:Happy Baby,C40:Natura Siberica,
R19:Flora,B40: Dr Jacobs,O12:SecretKey,W05:EsteeLauder,C41:Babyganics,M49:Babyganics,M50:膳魔师Thermos,M51:象印

echo json2str($multi );

\/api\/v2\/product\/1:,id:1,server:1,remark:备注,user:1,
dep_id:22,expect_user:[],rank:[1,2,3,4,5],stop_time:1570602767

以上案例的测试数据

$arr = [
    "B39" => "Innisfree",
    "C39" => "TOWA",
    "O11" => "SANKO",
    "P26" => "顺顺儿",
    "S52" => "思诗乐",
    "H17" => "Zab-szele ",
    "L40" => "Salus",
    "D34" => "Ritz ",
    "A30" => "Happy Baby",
    "C40" => "Natura Siberica",
    "R19" => "Flora",
    "B40" => " Dr Jacobs",
    "O12" => "SecretKey",
    "W05" => "EsteeLauder",
    "C41" => "Babyganics",
    "M49" => "Babyganics",
    "M50" => "膳魔师Thermos",
    "M51" => "象印",
];

$multi = [
    "/api/v2/product/1" => '',
    "id" => 1,
    "server" => 1,
    "remark" => "备注",
    "user" => 1,
    "dep_id" => 22,
    "expect_user" => [],
    "rank" => [1, 2, 3, 4, 5],
    "stop_time" => 1570602767,
];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值