75142913在线留言
【技巧】将索引数组转为字符串的几种方式_PHP技术_网络人

【技巧】将索引数组转为字符串的几种方式

Kwok 发表于:2022-09-03 19:03:30 点击:279 评论: 0

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值。所以我们需要自己来写函数处理。

二、索引数组转字符串的几种方式

1、foreach 遍历法

foreach 是一种比较简单易懂的方法。我们通常情况下都会使用这样的方式:

function array_to_string(array $array, string $glue = ':')
{
    $output = [];
    foreach ($array as $key => $value) {
        $output[] = $key . '_' . $value;
    }
    return implode($glue, $output);
}

2、array_walk 修改$value

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
}

 3、array_map 闭包回调处理

可读性会差一些,但可以更灵活的使用。

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)
    ));
}

4、使用 http_build_query 快速转换

http_build_query 一般用于将一个多维数组转成 URL 查询 使用的。我们可以配合 str_replace 将我们特定的符号替换即可达到同样的效果;

function array_to_string(array $array, string $glue = ':')
{
    return str_replace('=', '_', http_build_query($array, '', $glue));
}

包括但不限于以上的几种方式,当然可能还有更好的方法,可以通过评论告诉我哟~

5、其它可使用的方案

如果单纯的将数组转为字符方便加密,我们可以使用 json_encode()或者serialize()等方式,配全md5(),hash、base64_decode等方式加密即可。

除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/236
标签:数组字符串转换Kwok最后编辑于:2022-09-03 20:03:27
0
感谢打赏!

《【技巧】将索引数组转为字符串的几种方式》的网友评论(0)

本站推荐阅读

热门点击文章