2013-10-13 5 views
1

Я ищу способ, чтобы разбить CSV строку в ключи многомерного PHP массиваPHP раскол CSV строки в многомерный массив

а, б, становится

$some_array['a']['b']['c'] = true; 

а, б, d, e становится

$some_array['a']['b']['d']['e'] = true; 
+1

Что произойдет, если у вас есть, B, C, D, за которым следует, Ь, с? Вы сначала установите '$ some_array ['a'] ['b'] ['c'] ['d'] = true;' что означает '$ some_array ['a'] ['b'] ['c' ] '- массив. Но тогда вы установите '$ some_array ['a'] ['b'] ['c']', чтобы быть логическим значением true, - переписывая содержимое первой строки. Вам нужно будет убедиться, что все строки в вашем CSV имеют определенное количество столбцов для вашего вопроса, чтобы иметь смысл. – Annabel

+0

@ Annabel хорошая вещь. В этом случае данные упорядочиваются так, что это не будет проблемой. –

ответ

4

Возможно, что-то вроде этого?

<?php 
$csv_inputstring = 
"1,2,3 
a,b,c 
d,e,f"; 
$output = array(); 
foreach(explode("\n",$csv_inputstring) as $line){ 
    $values = str_getcsv($line); 
    $tmp = &$output; 
    foreach($values as $value){ 
     if (!is_array($tmp)){ 
      $tmp = array(); 
     } 
     $tmp = &$tmp[$value]; 
    } 
    $tmp = true; 
} 

print_r($output); 

?> 

Результат этого теста:

Array 
(
    [1] => Array 
     (
      [2] => Array 
       (
        [3] => 1 
       ) 

     ) 

    [a] => Array 
     (
      [b] => Array 
       (
        [c] => 1 
       ) 

     ) 

    [d] => Array 
     (
      [e] => Array 
       (
        [f] => 1 
       ) 

     ) 

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