【问题标题】:Array formatting into a specific format?数组格式化成特定格式?
【发布时间】:2013-01-02 07:18:45
【问题描述】:

在将结果集格式化为以下格式后,我得到了如下所示的数组。

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 的总和......

【问题讨论】:

  • 你从哪里得到xxx@4801 ????格式化前的原始数组在哪里???
  • xxx 是所有数组元素............我通过使用连接将它变成了一个字符串。
  • 它令人困惑......你能用适当的相关例子更新你的问题
  • 嘿,只是一个数组是那种格式..........告诉我有没有办法进入第二种格式。

标签: php arrays codeigniter


【解决方案1】:

你可以试试

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

Output

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

Simple Online Demo

【讨论】:

  • 这只是给出了唯一的值......我想要通过在'@'之后添加内容来获得唯一的行............
  • 检查我的输出一次.....你的输出给出 xxx@2345 但我想要 xxx@4801........其中 4801 是 2345 和 2456 的总和
  • 这就是为什么我要你把你的问题说清楚.....我会用解决方案更新答案
【解决方案2】:

您可以使用array_unique() 函数并使用array_values() 重新索引它,例如查找代码。

【讨论】:

  • hey lalith,你能检查一下 Baba 给出的答案吗............函数是什么($a,$b)......跨度>
  • 我检查了你最近所做的编辑,我在 baba 之前回答过,所以猜猜 reduce 和 explode 对你有帮助。
  • 那个函数是什么($a,$b)
  • array_reduce() 可以有一个可调用函数($a,$b) php.net/manual/en/function.array-reduce.php
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2019-10-02
  • 2014-12-15
  • 1970-01-01
  • 2011-09-27
相关资源
最近更新 更多