【问题标题】:Prepare Array for CSV为 CSV 准备数组
【发布时间】:2013-07-08 08:10:50
【问题描述】:

首先: 我自己解决了这个问题。但我想知道,是否有更好的方法。

我的任务是重新排序 csv 以获得更好的概览。 我们从一个工具中导出,以显示 Windows 客户端网络中的所有用户和打印机。

我想将其转换为一个列表,其中每一列都包含一台打印机的用户。 像这样:

printer1 printer2 printer3
user1    user2    user1
         user3    user2

我的来源是这样的:http://pastebin.com/DdeHuB79

我已通过收集所有打印机然后收集每台打印机的所有用户来解决此问题。 这是一个非常缓慢的解决方案,因为我正在读取每台打印机的孔 csv...

我目前的解决方案:http://pastebin.com/dAiZS2Ck

我的第一次尝试:http://pastebin.com/1JDpBH67

有人对重新排列这些项目有更好的想法吗?

编辑 1: 我的数组应该是这样的,以便正确地将其放入 csv:

Array
(
    [0] => Array
        (
            [printer1 => user1
            [printer2 => user2
            [printer3 => user1 
        )
    [1] => Array
        (
            [printer1 => 
            [printer2 => user3
            [printer3 => user2
        )
)

【问题讨论】:

  • 您可以使用file()explode() 并只阅读一次。
  • 谢谢。但我不在乎打开文件不止一次。是的,检查数组比检查文件更快。但我想减少循环次数。

标签: php arrays csv


【解决方案1】:

您可以同时读取打印机和用户。

            while (($data = fgetcsv($handle, 1000, ';','"')) !== FALSE)
            {
                    $printer = trim(strtolower($data[1]));
                    $user = trim(strtolower($data[0]));

                    $printers[$printer][] = $user;                        
            }

【讨论】:

  • 我以前做过这样的事情。但我需要每行中打印机的所有值(一个数组元素)。查看我的更新
  • 可以增加输入大小4064
猜你喜欢
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多