# Array und For-Schleife



## pauliee (10. Juli 2007)

Hallo!

Habe ein Script, bei dem ich in einer for-schleife bei jedem Durchlauf die Index-Zahl eines 2-dimensionalen Arrays ändern muss.

Hier der Code:


```
for($i;$i < $a;$i++) {

			$notext = $array[1][$i];
		preg_match_all($pat, $notext, $array);
	
	print_r($array[1][4]);
	echo "<br>";


	$count++;
	};
```

Wenn ich das nun ausführe, wird mir nichts angezeigt. Normal sollten mir 12 verschiedene Werte angezeigt werden.

Habe ich hier einen Syntax-Fehler drin?

mfg


----------



## Nils Hitze (10. Juli 2007)

Kann ich den Rest vom Schützenfest auch mal sehen?

Also $a und was mal in $array drin war? Denn nach dem
ersten Durchlauf ist $array weg, weil du das mit den Inhalten
des preg match füllst?!


----------



## ssurfer (10. Juli 2007)

Was mir auffällt ist, dass du die Variable $i nicht deklarierst.

for($i = 0; $i < $a; $++)


Kann Nils nur zustimmen, ändere die Variable für die Treffer in preg_match_all oder sag uns wo genau der Syntaxfehler auftritt.


----------



## pauliee (10. Juli 2007)

Habe es nun soweit gebracht, das er mir wenigstens den ersten Wert ausliest.

Hier das ganze Script:


```
$data = implode("", file($file_url));

#echo $data;
// das Suchmuster mit Delimiter und Modifer (falls vorhanden) 
$pattern = '~<TR align=right>(.*?)</tr>~isu'; 

// Auswertung mit preg_match_all() 
preg_match_all($pattern, $data, $array);
// formatierte Ausgabe 

	$a = count($array[1]);

// ************************************************************************************************** 
  $pat = '~<td>(.*?)</td>~is';


	for($i = 0;$i < $a;$i++) {

	$notext = $array[1][$i];
	preg_match_all($pat, $notext, $array);
	// Ausgabe
	print $array[1][4];

	$count++;
};

?>
```


----------



## Iches (10. Juli 2007)

Wie sieht denn deine Datei aus, die du einliest?


----------



## pauliee (10. Juli 2007)

Ist ein Perl- / HTML- File was damit ausgelesen wird.
Du hast mir da eh Script- Hilfen gegeben ... war mein letztes Posting.


----------



## pauliee (13. Juli 2007)

Kann mir bitte irgendwer helfen?

Die Werte sehen nun so aus: 1918,1870,4818,1205,1831,2198,716,0,0,0,0,0,
Und wenn ich diese jetzt trennen will mit explode(), kommen bei $array[0] alle Zahlen ohne Komma! Ab $array[1] kommt dann gar nichts mehr!


----------



## Iches (13. Juli 2007)

Ich denke dann hast du irgendwas falsch gemacht, zeig mal wie du das explode auf rufst.


----------



## pauliee (13. Juli 2007)

Ja das ich was falsch gemacht habe ist mir aufgefallen 

Hier nochmal der Code - vielleicht verträgt sich explode() nicht mit str_replace()



```
<?
	$data = implode("", file($woher));

	$pattern = '~<TR align=right>(.*?)</tr>~isu'; 



	preg_match_all($pattern, $data, $array);


	$a = count($array[1]);




  $pat = '~<td>(.*?)</td>~is';



	

		
	for($i = 0;$i < $a;$i++) {

	$notext = $array[1][$i];
	preg_match_all($pat, $notext, $array2);

	// letzte HTML- Tags aus String entfernen
	$inhalt332= str_replace("<font size=\"-1\">","",$array2[1][4]);
	$inhalt332= str_replace("</font>",",",$inhalt332);
	$inhalt332= str_replace(" ","",$inhalt332);
	$inhalt332= str_replace(".","",$inhalt332);

	echo $inhalt332;
	
};
?>
```


----------



## Iches (13. Juli 2007)

Wo rufst du denn dabei explode auf? Und an str_replace kann es eigentlich auch nicht liegen, außer natürlich das es vielleicht gar keine Kommata mehr gibt. Aber das glaube ich eigentlich nicht.


----------



## pauliee (13. Juli 2007)

Sorry beim Script hat dieser Teil gefehlt, hier wird explode aufgerufen:


```
// ... 

for($i = 0;$i < $a;$i++) {

	$notext = $array[1][$i];
	preg_match_all($pat, $notext, $array2);

	$inhalt332= str_replace("<font size=\"-1\">","",$array2[1][4]);
	$inhalt332= str_replace("</font>",",",$inhalt332);
	$inhalt332= str_replace(" ","",$inhalt332);
	$inhalt332= str_replace(".","",$inhalt332);

	$string = explode(",",$inhalt332);

	echo $string[$i];
	
};
```


----------



## Iches (13. Juli 2007)

Kannst du mal bitte den Code posten den du einliest, damit ich es mal bei mir testen kann.


----------



## pauliee (13. Juli 2007)

```
<table align="center" border="1">
    <tbody><tr align="center"> <th bgcolor="#808080"><font size="-1"> Date-from </font></th>

      <th bgcolor="#808080"><font size="-1"> Date-to </font></th>
      <th bgcolor="#ff0000"><font size="-1">MBytes-IN </font></th>
      <th bgcolor="#00ff00"><font size="-1">MBytes-OUT </font></th>
      <th bgcolor="#0000ff"><font size="-1">MBytes-TOTAL </font></th>
      <th bgcolor="#ffff00"><font size="-1"> Ratio </font></th>

    </tr>
  <tr align="right">
    <td><font size="-1">01.01.2007  00:00 </font></td>
    <td><font size="-1">01.02.2007  00:00 </font></td>
    <td> <font size="-1">233</font></td>
    <td> <font size="-1">1.684</font></td>

    <td> <font size="-1">1.918</font></td>
    <td> <font size="-1">1 : 7.22</font></td>
  </tr>
  <tr align="right">
    <td><font size="-1"><a href="192.168.200.238_8.total.2007.02.html">01.02.2007  00:00 </a></font></td>
    <td><font size="-1">01.03.2007  00:00 </font></td>

    <td> <font size="-1">178</font></td>
    <td> <font size="-1">1.692</font></td>
    <td> <font size="-1">1.870</font></td>
    <td> <font size="-1">1 : 9.49</font></td>
  </tr>

  <tr align="right">
    <td><font size="-1"><a href="192.168.200.238_8.total.2007.03.html">01.03.2007  00:00 </a></font></td>
    <td><font size="-1">01.04.2007  00:00 </font></td>
    <td> <font size="-1">1.311</font></td>
    <td> <font size="-1">3.507</font></td>
    <td> <font size="-1">4.818</font></td>

    <td> <font size="-1">1 : 2.68</font></td>
  </tr>
  <tr align="right">
    <td><font size="-1"><a href="192.168.200.238_8.total.2007.04.html">01.04.2007  00:00 </a></font></td>
    <td><font size="-1">01.05.2007  00:00 </font></td>
    <td> <font size="-1">418</font></td>

    <td> <font size="-1">786</font></td>
    <td> <font size="-1">1.205</font></td>
    <td> <font size="-1">1 : 1.88</font></td>
  </tr>
  <tr align="right">
    <td><font size="-1"><a href="192.168.200.238_8.total.2007.05.html">01.05.2007  00:00 </a></font></td>

    <td><font size="-1">01.06.2007  00:00 </font></td>
    <td> <font size="-1">813</font></td>
    <td> <font size="-1">1.018</font></td>
    <td> <font size="-1">1.831</font></td>
    <td> <font size="-1">1 : 1.25</font></td>

  </tr>
  <tr align="right">
    <td><font size="-1"><a href="192.168.200.238_8.total.2007.06.html">01.06.2007  00:00 </a></font></td>
    <td><font size="-1">01.07.2007  00:00 </font></td>
    <td> <font size="-1">390</font></td>
    <td> <font size="-1">1.808</font></td>

    <td> <font size="-1">2.198</font></td>
    <td> <font size="-1">1 : 4.64</font></td>
  </tr>
  <tr align="right">
    <td><font size="-1"><a href="192.168.200.238_8.total.2007.07.html">01.07.2007  00:00 </a></font></td>
    <td><font size="-1">01.08.2007  00:00 </font></td>

    <td> <font size="-1">222</font></td>
    <td> <font size="-1">495</font></td>
    <td> <font size="-1">716</font></td>
    <td> <font size="-1">1 : 2.23</font></td>
  </tr>

  <tr align="right">
    <td><font size="-1">01.08.2007  00:00 </font></td>
    <td><font size="-1">01.09.2007  00:00 </font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>

    <td> <font size="-1">1 : 0.00</font></td>
  </tr>
  <tr align="right">
    <td><font size="-1">01.09.2007  00:00 </font></td>
    <td><font size="-1">01.10.2007  00:00 </font></td>
    <td> <font size="-1">0</font></td>

    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">1 : 0.00</font></td>
  </tr>
  <tr align="right">
    <td><font size="-1">01.10.2007  00:00 </font></td>

    <td><font size="-1">01.11.2007  00:00 </font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">1 : 0.00</font></td>

  </tr>
  <tr align="right">
    <td><font size="-1">01.11.2007  00:00 </font></td>
    <td><font size="-1">01.12.2007  00:00 </font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>

    <td> <font size="-1">0</font></td>
    <td> <font size="-1">1 : 0.00</font></td>
  </tr>
  <tr align="right">
    <td><font size="-1">01.12.2007  00:00 </font></td>
    <td><font size="-1">01.01.2008  00:00 </font></td>

    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">0</font></td>
    <td> <font size="-1">1 : 0.00</font></td>
  </tr>

</tbody></table>
```


----------



## Michael Engel (13. Juli 2007)

Soo, die regex patterns waren nicht korrekt und müssen escapt werden ,)
Des weiteren, warum mit explode arbeiten wenn du es auch direckt in ein array schreiben kannst?
Und statt nach den HTML Tags zu suchen würd ich gleich die entsprechende Funktion verwenden:

vielleicht statt dem impldode(file()) noch get_file_contents()



```
$pattern = '%\<TR align="right"\>(.*)\<\/tr\>%isU'; 
    preg_match_all($pattern, $data, $array);
    $a = count($array[1]);
   $pat = '~\<td\>(.*?)\<\/td\>~is';
       
    for($i = 0;$i < $a;$i++) {
    $notext = $array[1][$i];
    preg_match_all($pat, $notext, $array2);

    // letzte HTML- Tags aus String entfernen
    $inhalt332= strip_tags($array2[1][4]);
    $inhalt332= str_replace(" ","",$inhalt332);
    $inhalt332= str_replace(".","",$inhalt332);

    $return[$i] = $inhalt332;
    
}

print_r($return);
?>
```


----------



## pauliee (16. Juli 2007)

Habe es nun noch mit file_get_contents() probiert, will aber genau so wenig, wie mit implode


----------



## Michael Engel (16. Juli 2007)

Also wenn ich meinen Code ausführe bekomme ich das zurück:


```
Array
(
    [0] => 1918
    [1] => 1870
    [2] => 4818
    [3] => 1205
    [4] => 1831
    [5] => 2198
    [6] => 716
    [7] => 0
    [8] => 0
    [9] => 0
    [10] => 0
    [11] => 0
)
```


----------

