如何从数组内的值中修剪数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从数组内的值中修剪数据?相关的知识,希望对你有一定的参考价值。

这是我的数据:

$d = $request->request->get('data');

输出:

[{"name":"form[id]","value":"10"},{"name":"form[name]","value":"Telefon2"},{"name":"form[uuid]","value":"bb80878ad4"},{"name":"form[productgroup]","value":"6"},{"name":"form[category]","value":"1"},{"name":"form[documents]","value":"7"}

我想创建一个新数组,即删除括号内的变量。

 function trim($d) {
          preg_match('#[(.*?)]#', $d, $match);
          return $match[1];
   }


$dData = array_combine(array_column(trim($d), 'name'), array_column($d, 'value'));
$json = json_encode($dData);

但错误是

警告:preg_match()期望参数2是字符串,给定数组

答案

在开始之前,你需要做一些事情。

首先,将trim函数重命名为extract_name,因为php已经内置了trim函数,可以从字符串中删除空格 - 或者字符掩码中存在的任何字符。 其次,您需要迭代name列中的每个元素。您会注意到从preg_match获得的错误是因为您一次性传递所有值。 第三,我假设$d的值是PHP对象的数组。这是在我使用$d = json_decode($d);的解决方案中完成并假设的。

使用array_map而不是foreach意味着我们可以拥有一个漂亮的衬垫:

function extract_name($d) {
    preg_match('#[(.*?)]#', $d, $match);
    return $match[1];
}

$dData = array_combine(array_map('extract_name', array_column($d, 'name')), array_column($d, 'value'));

输出是:

array:6 [
  "id" => "10"
  "name" => "Telefon2"
  "uuid" => "bb80878ad4"
  "productgroup" => "6"
  "category" => "1"
  "documents" => "7"
]

Live demo

另一答案

我相信你需要这样的smth


$d = ['{"name":"form[id]","value":"10"}', '{"name":"form[name]","value":"Telefon2"}', '{"name":"form[uuid]","value":"bb80878ad4"}', '{"name":"form[productgroup]","value":"6"}'];

function combine(array $d): array
{
    $res = [];
    foreach ($d as $item) {
        $value = json_decode($item, true);
        preg_match('#[(.*?)]#', $value['name'], $match);;
        $columnName = $match[1];
        $res[$columnName] = $value['value'];
    }

    return $res;
}


$dData = combine($d);
$json = json_encode($dData);
echo $json;```

以上是关于如何从数组内的值中修剪数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 中修剪逗号分隔值中的前导零?

使用 Visual Studio Code 从对象值中删除尾随空格

尝试从数组中的值中删除基于 MKMap 的引脚

如何在提供者的值中传递数组和 setArray(React、Typescript、Context)

在数组值中显示额外数据

如何从 Spring MVC 中的请求参数中修剪空格