String bearbeiten mit str_replace

son gohan

Erfahrenes Mitglied
Hallo Leute,

Ich habe ein kleines Problem.
Ich habe eine menge Daten in Form von Zahlen, das sieht so aus:
PHP:
25.07.06	1,2623 	1,2563 	1,2668 	1,2578
24.07.06	1,2696 	1,2609 	1,2696 	1,2622

Diese Daten habe ich aber nur als String zur Verfügung und in keiner Tabelle.

Jede Reihe mit Datum gilt für ein Tag.
Ich habe mir jetzt vorgenommen gehabt, die Daten jeweils in ein array zu packen, pro Tag ein array mit den Daten.

Also so:
PHP:
$ar1 = array("25.07.06",	"1,2623", 	"1,2563", 	"1,2668", 	"1,2578");
$ar2 = array("24.07.06",	"1,2696", 	"1,2609", 	"1,2696", 	"1,2622");

Um das am einfachsten zu erreichen, habe ich mir folgenden Lösungsweg gebaut:
1. Ich nehme die Daten und lege Sie in einen String so:
PHP:
$text = '
25.07.06	1,2623 	1,2563 	1,2668 	1,2578
24.07.06	1,2696 	1,2609 	1,2696 	1,2622
23.07.06	1,2695 	1,269 	1,2712 	1,2696
22.07.06	1,2692 	1,2692 	1,2695 	1,2695
21.07.06	1,2632 	1,2627 	1,2703 	1,2692
20.07.06	1,2596 	1,2589 	1,2652 	1,2631
19.07.06	1,2499 	1,2463 	1,2607 	1,2594
18.07.06	1,2522 	1,2477 	1,2554 	1,2501
17.07.06	1,2633 	1,2508 	1,2639 	1,2519';

2. Den String bearbeite ich mit str_replace so, dass sich aus jedem Datensatz ein array bildet, so:
PHP:
$a = str_replace(",", ".", $text);
$a = str_replace("\n", "\$ar=array(\"", $a);
$a = str_replace("\r", "\");\n", $a);
$a = str_replace(" ", "\",\"", $a);
$a = str_replace(".07.06", ".07.06\",\"", $a);
echo "<pre>".$a."</pre><br><br>";

Bis hier hin habe ich es alleine geschaft und die Resultate sind auch ganz gut, es gibt jetzt nur ein Problem. Die Array haben alle die gleiche Bezeichnung $ar = array(); , ich müsste aber irgendwie jeden Array unterschiedliche Namen geben, z.B. $ar1 = array(); $ar2 = array() usw. versteht ihr?
 
Zuletzt bearbeitet:
Hallo,

danke für die Hilfe.

Ich habe schon etwas länger kein PHP mehr gemacht. Kannst du mir bitte dein Lösungsvorschlag etwas genauer erklären, das wäre wirklich sehr nett von dir.

Ich will ja erreichen, dass ich nachher jeden Datensatz als ein array zur Verfügung habe, und dann auf die einzelnen Daten im Array zugreifen kann. Und das würde nur gehen, wenn ich jedes array einzeln benene.
 
Hi,
Ich denke mal er meint es so:

$ar = array()

$a = str_replace("\n", "\$ar[]=array(\"", $a);

dann müssten die arrays in $ar[0], $ar[1], $ar[2] usw.. gespiechert werden.
Hoffe ich hab es richtig verstanden.
 
Wenn Du den String nicht dynamisch erhältst und etwas anders schreibst, hast Du auch noch diese Möglichkeit:
PHP:
<?php 

   $text = '25.07.06 1,2623 1,2563 1,2668 1,2578 |
            24.07.06 1,2696 1,2609 1,2696 1,2622 |
            23.07.06 1,2695 1,269  1,2712 1,2696 |
            22.07.06 1,2692 1,2692 1,2695 1,2695 |
            21.07.06 1,2632 1,2627 1,2703 1,2692 |
            20.07.06 1,2596 1,2589 1,2652 1,2631 |
            19.07.06 1,2499 1,2463 1,2607 1,2594 |
            18.07.06 1,2522 1,2477 1,2554 1,2501 |
            17.07.06 1,2633 1,2508 1,2639 1,2519';
             
   $a = explode('|',trim($text));
    
   for($i=0;$i < count($a);$i++){
     $b[]= explode(' ',trim($a[$i]));
   }    
    
   echo '<pre>';
   print_r($b);
   echo '</pre>';
    
?>
 
Zurück