2013-03-27 12 views
6

Buduję prosty system sklepu, który pobiera produkty z tablicy wygenerowanej przez plik CSV.fgetcsv(): pierwszy wiersz jako klucz

My CSV jest następujący:

pid;name;color 
11149;Miro;"schwarz;weiß;blau;rot;gelb" 
11004;FritzHansen;"buche;nussbau;schwarz;weiß;blau;hellblau;rot;grün;gelb;retro" 

Używam TE następujący skrypt

if (($handle = fopen('_products.csv', 'r')) === false) { 
    die('Error opening file'); 
} 

$headers = fgetcsv($handle, 256, ';'); 
$_products = array(); 

while ($row = fgetcsv($handle, 256, ';')) { 
    $_products[] = array_combine($headers, $row); 
} 
fclose($handle); 

który produkuje tej tablicy:

Array 
(
    [0] => Array 
     (
      [pid] => 11149 
      [name] => Miro 
      [color] => schwarz;weiß;blau;rot;gelb 
     ) 

    [1] => Array 
     (
      [pid] => 14215 
      [name] => 1800 
      [color] => schwarz;anthrazit 
     ) 

    [2] => Array 
     (
      [pid] => 11004 
      [name] => FritzHansen 
      [color] => buche;nussbau;schwarz;weiß;blau;hellblau;rot;grün;gelb;retro 
     ) 
) 

chcę być klucze 0-x wartość [pid] odpowiedniego "pod" -array.

Jak to zrobić? Dzięki!

Odpowiedz

6

spróbować

while ($row = fgetcsv($handle, 256, ';')) { 
    $_products[$row[0]] = array_combine($headers, $row); 
} 
+1

chcieć edytować że do '$ row [ 'pid']'. – MichaelRushton

+0

yup .. :) .. dzięki .. – bipen

+0

'$ row ['pid']' dało mi 'Undefine index: pid' ostrzeżenie, ale' $ row [0] 'zrobił lewę. Dzięki! – fhirner

0

ten powinien zrobić to, czego potrzebujesz:

$products = array(); 

foreach ($_products as $product) 
{ 
    $products[$product['pid']] = $product; 
} 

print_r($products); 
Powiązane problemy