2013-07-08 4 views
0

Прежде всего: Я решил эту проблему самостоятельно. Но я хочу знать, если есть лучший способ сделать это.Подготовить массив для CSV

У меня есть задача переупорядочить csv для лучшего обзора. У нас есть экспорт из инструмента, чтобы показать всем пользователям и там принтеры в сети клиентов Windows.

Я хочу преобразовать его в список, в котором каждый столбец содержит пользователей одного принтера. что-то вроде этого:

printer1 printer2 printer3 
user1 user2 user1 
     user3 user2 

Мой источник выглядит следующим образом: http://pastebin.com/DdeHuB79

Я решил эту проблему, собирая все принтеры, а затем сбор всех пользователей для каждого принтера. это очень медленное решение, потому что я читаю отверстие CSV за принтер ...

Мое текущее решение: http://pastebin.com/dAiZS2Ck

один из первых моих попыток: http://pastebin.com/1JDpBH67

ли какие-либо имеют по лучшая идея переупорядочения этих предметов?

EDIT 1: мой массив должен выглядеть так, чтобы поместить его в файл CSV правильно:

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

Вы можете использовать 'file()' и 'explode()' и читать его только один раз. – Robert

+0

спасибо. но я не забочусь об открытии файла более одного раза. да, быстрее проверить массив, чем файл. но я хочу уменьшить количество циклов. –

ответ

0

Вы можете прочитать принтеры и пользователей одновременно.

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

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

Я сделал что-то подобное раньше. но мне нужны все значения для принтера в каждой строке (один элемент массива). см. мое обновление –

+0

Вы можете увеличить размер ввода 4064 –

Смежные вопросы