一、一维数组转字符串
比较简单,遍历一次就取到了
/**
* 一维数组转字符串
* @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,
];