2016-10-12 8 views
0

ich verarbeiten, um eine CSV-Datei und wenn alles gesagt und getan, ich am Ende mit etwas wie dieseFormatierung Arraydaten

Array 
(
    [0] => Array 
     (
      [Title] => 11AA002 
      [Supplier Name] => Supplier A 
      [Supplier Name2] => 
      [Effects2] => Bass 
      [Effects3] => Percussion 
      [Effects4] => Jazz/Piano 
      [Effects5] => Drums 
      [Components2] => Kit 
      [Components3] => 
      [Components4] => 
      [Technology Areas2] => Something 
      [Technology Areas3] => 
      [Technology2] => Cold 
      [Technology3] => Hot 
      [Technology4] => 
      [Technology5] => 
      [Briefs & Brands2] => 
      [Briefs & Brands3] => 
     ) 
    //Other elements  
) 

Was ich jetzt versuchen, die Anordnung von Daten Prozess zu tun. Das erste, was ich versuche, ist, alles zu entfernen, das einen leeren Wert hat. Dabei versuche ich die folgenden

foreach($csvArray as $row) { 
    foreach($row as $key => $value) { 
     if(empty($value)) { 
      unset($key);  
     } 
    } 
} 

Dies scheint nicht, obwohl das Element aus dem Array zu entfernen. Im obigen Beispiel sollten Dinge wie Supplier Name2 entfernt werden.

Es gibt ein paar andere Dinge, die ich versuche zu klären, aber nicht sicher, wo ich anfangen soll. Der Titel sollte immer das folgende Format haben YYSUPCCC wobei YY das Jahr ist, SUP die ersten 3 Buchstaben des ersten Lieferanten und CC die Zählung. Also das obige Beispiel ist falsch, es sollte 16SUP001 sein. Das nächste Array-Element, das denselben Lieferanten hat, ist 002.

Wäre so etwas möglich? Jeder Rat geschätzt.

Dank

+0

Sie haben eine Antwort bekommen, um das 'unset()' Problem zu beheben, aber Sie müssen neue Fragen für andere Probleme, denen Sie gegenüberstehen, stellen. – JazZ

Antwort

0

Sie haben den Schlüssel aus dem ursprünglichen Array unscharf zu schalten:

foreach($csvArray as $key1 => $row) { 
    foreach($row as $key => $value) { 
     if(empty($value)) { 
      unset($csvArray[$key1][$key]);  
     } 
    } 
} 

Hoffe, es hilft.

+0

Wie erhalten Sie $ row Daten? –

+0

@RubabHossain Danke. Ich habe den Tippfehler korrigiert. – JazZ

+0

Gibt es eine Möglichkeit, den Titel im richtigen Format zu überprüfen? Danke –

1

nicht gesetzt ($ key);

Sie versuchen, die Variable nach dem Schlüssel mit dem Namen unscharf zu schalten (die keine Wirkung als solche Variable macht nicht vorhanden ist), nicht-Array-Element, wie man wollte. Um Letzteres zu tun, sollten Sie stattdessen an Ihrem Quell-Array arbeiten. dh:

foreach($csvArray as $k=>$row) { 
    foreach($row as $key => $value) { 
     if(empty($value)) { 
      unset($csvArray[$k][$key]);  
     } 
    } 
} 

statt.

+0

Große Antwort !!! – JazZ

+0

Lol, ein Downvote ... StackOverflow ernstes Geschäft :) –

+0

Seien Sie bitte fair. Es ist genau die gleiche Antwort wie meine ... Ich brauche 1000 Wiederholungen, um sehen zu können, wer meine Posts abgelehnt hat. ;) – JazZ

2

Mit Hilfe eine Referenz &-$row das Array direkt zu ändern, nur um es filtern:

foreach($csvArray as &$row) { 
    $row = array_filter($row); 
} 

Das ist es.