PHP内置了一个implode转数组的$value连接成一个字符串,他还有一个别名join,通常情况下我们都使用的是这个函数。但有一些特殊的时候我们需要将一个索引的数组转为字符并保留$key,下面针对这样的情况我提供几种解决方案来处理。
//需要将查询数据库的条件转成一个key缓存下来
$array = ['type' => 'article', 'id' => 1, 'order' => 'dataline', 'status' => 0];
我需要将上面的数组转成下面的字符串:
"type_article:id_1:order_dataline:status_0"
以方便我将其缓存到Redis里。如果我们使用官方提供的implode来连接将不会得到key值。所以我们需要自己来写函数处理。
foreach 是一种比较简单易懂的方法。我们通常情况下都会使用这样的方式:
function array_to_string(array $array, string $glue = ':')
{
$output = [];
foreach ($array as $key => $value) {
$output[] = $key . '_' . $value;
}
return implode($glue, $output);
}
array_walk 可以可以通过指针直接修改数组的值,而不需要再次复制一个数组去修改。
function array_to_string(array $array, string $glue = ':')
{
array_walk($array, function (&$value, $key) {
$value = $key . '_' . $value;//遍历并修改数组的$value
});
return implode($glue, $array); //返回合并后的value
}
可读性会差一些,但可以更灵活的使用。
function array_to_string(array $array, string $glue = ':')
{
return implode($glue, array_map(
function ($v, $k) {
return sprintf("%s_%s", $k, $v);
},
$array,
array_keys($array)
));
}
http_build_query 一般用于将一个多维数组转成 URL 查询 使用的。我们可以配合 str_replace 将我们特定的符号替换即可达到同样的效果;
function array_to_string(array $array, string $glue = ':')
{
return str_replace('=', '_', http_build_query($array, '', $glue));
}
包括但不限于以上的几种方式,当然可能还有更好的方法,可以通过评论告诉我哟~
如果单纯的将数组转为字符方便加密,我们可以使用 json_encode()或者serialize()等方式,配全md5(),hash、base64_decode等方式加密即可。
除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/236
《【技巧】将索引数组转为字符串的几种方式》的网友评论(0)