array_search findet ersten haystack Wert nicht

peppijunior

Mitglied
Abend,

folgende Situation,

ich lese mir ein File ein, welches ähnlich einem ini File aufgebaut ist, sprich es gibt verschiedene Sections [Section1] [Section2] und so weiter, allerdings in einer Wurst und nicht zeilenweise gegliedert.
Dies wurde schon so in ein Array verpackt das jede Zeile des Arrays einen Wert Section und einen Wert des Sectioninhaltes hat, also z.b.

PHP:
echo $arr[0][0];     //TITLE
echo $arr[0][1];     //Mein Titel

Nun möchte ich ein paar ausgewählte dieser Sections in meine DB schreiben.
Hierzu die Funktion array_search.
Mein Array in dem die Sections die ich suche stehen, könnte je nach konfiguration so aussehen:

PHP:
$ShortInfos = array(1 => 'TITLE', 2 => 'LENGTH', 3 => 'DATE');

Meine Function sieht nun so aus:
PHP:
foreach ($Arr as $Value) {
               if (array_search($Value[0], $ShortInfos)){
                          $InsertCol[$i][0] = $Value[0];
                          $InsertCol[$i][1] = $Value[1];
                }
}

Nun ist es so, das im $Arr garantiert die Section TITLE enthalten ist, und im $ShortInfos ebenso.
Jedoch wird es von array_search nicht erkannt. Verstehe ich hier etwas Grundlegendes an der Funktion nicht, oder ist es gar nur ein kleiner Fehler von mir oder wo oder was?
 
Verstehe dein Problem nicht ganz. Wenn deine Datei schon fast wie eine Konfigurationsdatei aufgebaut ist, dann kannst du sie ganz einfach mit parse_ini_file() einlesen und erhälst ein assoziatives Array.

http://de2.php.net/manual/de/function.parse-ini-file.php hat gesagt.:
; Dies ist ein Beispiel für eine Konfigurationsdatei
; Kommentare beginnen wie in der php.ini mit ';'
Code:
[erste_gruppe]
eins = 1
fünf = 5
animal = BIRD

[zweite_gruppe]
pfad = /usr/local/bin
URL = "http://www.example.com/~username"

http://de2.php.net/manual/de/function.parse-ini-file.php hat gesagt.:
Code:
Array
(
    [eins] => 1
    [fünf] => 5
    [animal] => Dodo bird
    [pfad] => /usr/local/bin
    [URL] => http://www.example.com/~username
)
Array
(
 [erste_gruppe] => Array
 (
  [eins] => 1
  [fünf] => 5
  [animal] = Dodo bird
 )

 [zweite_gruppe] => Array
 (
  [pfad] => /usr/local/bin
  [URL] => http://www.example.com/~username
 )

)
 
Deswegen habe ich geschrieben, dass ich dein Problem nicht ganz verstehe.
Nach ein paar mal lesen bin ich dem vielleicht schon näher gekommen.

Und zwar habe ich dein Skript rekonstruiert und die Laufvariable $i frei nach Schnauze hinzugefügt, hoffe ist in der richtigen Ebene:
PHP:
$arr[0][0] = "TITLE";
$arr[0][1] = "Mein Titel";

$ShortInfos = array(1 => 'TITLE', 2 => 'LENGTH', 3 => 'DATE');  

$i = 0;
foreach ($arr as $Value)
{
  if (array_search($Value[0], $ShortInfos))
  {
    $InsertCol[$i][0] = $Value[0];
    $InsertCol[$i][1] = $Value[1];
    $i++;
  }
}

echo "<pre>"; var_dump($InsertCol); echo "</pre>";

Und das gibt aus:
Code:
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "TITLE"
    [1]=>
    string(10) "Mein Titel"
  }
}

Meiner Ansicht nach Funktioniert es einwandfrei zum schreiben in eine Tabelle.
Erläutere daran doch bitte deinen Fehler / das Problem.
 
$i stimmt so, hab ich hier im Beispiel leider vergessen!

Habe (leider nur durch herumprobieren und nicht durch Fakten) heraus gefunden, das das Array $ShortInfos in meinem Script mit dem Index 0 beginnt, hat das erste Element den Index 1, so funktioniert auch alles problemlos :)

Vielen Dank für die Hilfe
 

Neue Beiträge

Zurück