【问题标题】:Merge array of data from API合并来自 API 的数据数组
【发布时间】:2015-05-07 04:57:14
【问题描述】:

首先,我有一个报告系统,我可以在其中提取 CSV 数据,但返回的状态非常糟糕。

拉回数据的方式是通过:

$data = explode("\t", $site);
$sID = $data[1];
$sCol = $data[2];

等等。

我可以在回显时进一步使用这些变量,而不是问题。

我真正的问题是在上面的数据中,我得到了几个$sID以这种格式返回:

20390    Red
20390    Blue
20390    Green
20390    White
20391    Blue
20391    Yellow
20391    Green
20391    White

我想将所有数据合并到一行中,例如:

20390  Red, Blue, Green, White

类似于array_merge 的东西是理想的,但不确定哪个函数可以复制它。

【问题讨论】:

  • 试试:implode(', ',$sID);
  • @Codew 这似乎没有给我任何东西。
  • 提供$site的内容,让我们可以看到爆炸前的样子。到目前为止,我假设$site 只有这些内容"20390\tRed" 这告诉我你在某种类型的迭代中循环这个以获得那个列表..?如果是这样的话,$site 来自哪里?
  • 从$site 得到的数据看起来像SID COLOR DATE AMT FEE 20390 Red 2015-02-16 0.55 0.15 20390 Blue 2015-02-16 0.45 0.35 20390 Green 2015-02-16 1.55 1.15 20390 White 2015-02-16 0.25 0.05 20391 Blue 2015-02-16 1.55 1.15 20391 Yellow 2015-02-16 0.65 0.10 20391 Green 2015-02-16 0.35 0.25 20391 White 2015-02-16 0.55 0.15 我只是简单地爆炸然后使用数据中的位置($data[1] 等)来回显数据。

标签: php arrays codeigniter sorting csv


【解决方案1】:

好的,在你的情况下,我会这样做:

$data = explode("\t", $site[0]);

$final = array();
foreach ($data as $row) {
    if ($row != 0) {
        $info = explode(" ", $row);
        if (isset($final[$info[0]])) {
            array_push($final[$info[0]], "$info[1], $info[2], $info[3], $info[3]");
        } else {
            $final[$info[0]] = array();
            array_push($final[$info[0]], "$info[1], $info[2], $info[3], $info[3]");
        }
    }
}
var_dump($final);

【讨论】:

  • Yarp 这是怎么做的
  • 这通过一些更改解决了我的问题,感谢您的提醒。
【解决方案2】:

你可以试试这样的:

   $data = explode("\t", $site);
   $s[$data[1]] = array_key_exists($data[1], $s)?($s[$data[1]].', '.$data[2]):$data[2];
foreach($s as $k => $val){
  $sID = $k;
  $sCol = $val;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多