Php 是否将数组格式化为特定格式?

Php 是否将数组格式化为特定格式?,php,arrays,codeigniter,Php,Arrays,Codeigniter,在我将结果集格式化为下面的格式之后,我得到一个如下所示的数组 Array ( [0] => xxx@2456 [1] => xxx@2345 [2] => xxy@1234 [3] => xxy@123 [4] => xyz@3456 ); 我想要上面数组的结果数组,如下所示。我正在考虑如何继续使用PHP字符串函数,或者是否有其他方法 注意:可能有这么多类似于上面的数组元素,但我希望在“@”之后添加最后一位数字后有唯一的元素

在我将结果集格式化为下面的格式之后,我得到一个如下所示的数组

Array
(
    [0] => xxx@2456
    [1] => xxx@2345
    [2] => xxy@1234
    [3] => xxy@123
    [4] => xyz@3456
);
我想要上面数组的结果数组,如下所示。我正在考虑如何继续使用PHP字符串函数,或者是否有其他方法

注意:可能有这么多类似于上面的数组元素,但我希望在“@”之后添加最后一位数字后有唯一的元素

Array
(
    [0] =>  xxx@4801
    [1] =>  xxy@1464
    [2] =>  xyz@3456
);

有没有关于如何进行……的想法。。。。。。。在上面的输出数组格式中xxx@4801是输入数组的2345和2456之和……

您可以使用
array\u unique()
函数,并使用
array\u值()对其重新索引。
例如,查找代码

    • 你可以试试

      $unique = array_reduce($data, function ($a, $b) {
          $c = explode("@", $b);
          if (isset($a[$c[0]])) {
              $d = explode("@", $a[$c[0]]);
              $a[$c[0]] = $c[0] . "@" . ($c[1] + $d[1]);
          } else {
              $a[$c[0]] = $b;
          }
          return $a;
      }, array());
      
      echo "<pre>";
      print_r(array_values($unique));
      

      你从哪里得到的
      xxx@4801
      ????格式之前的原始数组在哪里???xxx是所有数组元素………我通过使用串联将其做成字符串。它让人困惑。。。你能用适当的相对示例更新你的问题吗?我只是一个数组是那种格式…….告诉我有没有办法进入第二种格式。这只会给出唯一的值……我希望通过在“@”之后添加内容来获得唯一的行…….检查我的输出一次……你的输出会给出xxx@2345但是我想要xxx@4801........where4801是2345和2456的和这就是为什么我要你把你的问题说清楚。。。。。我会用解决方案更新答案Hey lalith你能检查Baba给出的答案吗………在what is function($a,$b)…我不会检查你最近做的编辑,我在Baba之前回答过,所以我猜reduce和explode帮了你的忙。什么是函数($a,$b)array_reduce()可以有一个可调用的函数($a,$b)
      Array
      (
          [0] => xxx@4801
          [1] => xxy@1357
          [2] => xyz@3456
      )