Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Array bei Bedarf Auffüllen

Mitglied: chb1982

chb1982 (Level 2) - Jetzt verbinden

29.10.2008, aktualisiert 02.11.2008, 2587 Aufrufe, 1 Kommentar

Moin,

ich hoffe hier nimmt sich jemand die Zet sich meinem Problem anzunehmen.
Unten ist ein kleines Script, das die Ausgabe von mehreren Spalten in eine Zusammenfasst.
In der Ausgangsdatei sind x Datensätze pro Auftragsnummer ($arKomPos[8]) und zwar so viele wie es Satzarten gibt ($arKomPos[33])

Die Ursprungstabelle sieht vereinfacht so aus:

Nummer - Satzart - Wert EK - Wert VK
4711 - 101 - 109,20 - 240, 30
4711 - 105 - 209,20 - 240, 30
4711 - 110 - 309,20 - 240, 30

4712 - 104 - 109,20 - 240, 30
4712 - 110 - 209,20 - 240, 30
4712 - 130 - 309,20 - 240, 30

Ziel soll sein jede Auftragsnummer in eine Zeile zu packen. Also

4711 - 101 - 109,20 - 105 - 209,20 - 110 - 309,20

Das bekommt das Script auch ganz toll hin.

Und jetzt kommt der Punkt.
Es gibt die Satzarten von 101 bis 130 durchgehend, aber sie werden nicht immer verwendet. Wenn sie nicht verwendet werden, sollen die Spalten mit 0 ausgegeben werden. Und das bekomme ich einfach nicht hin.

Anhand des Beispiels soll es also so aussehen.

4711 - 101 - 109,20 - 102 - 0 - 103 - 0 - 104 - 0 - 105 - 209,20


Kann mir jemand auf die Sprünge helfen wie ich das hinbekomme? Ich stehe schon am Rand der Verzweiflung!

Gruß
Christoph

Hier nun der Code

<?php
function convert_KomPos ($filename){
$last_kom = 0; Hilfsvariable Gruppenwechsel
$first_run = 1;
Satzarten
100, 101, 102, 103, 104, 110, 120, 121, 122, 124, 130, 131, 140

$x=1;

$fp=fopen("$filename","r");
$arKomSum=array();
while($arKomPos = fgetcsv($fp,8000,",")) {

$arKomSum[$arKomPos[8]][$arKomPos[33]][KomNr] = $arKomPos[8];
$arKomSum[$arKomPos[8]][$arKomPos[33]][KomSArt] = $arKomPos[33];
$arKomSum[$arKomPos[8]][$arKomPos[33]][KomEk.$arKomPos[33]] = $arKomPos[34] + $arKomSum[$arKomPos[8]][$arKomPos[33]][KomEk.$arKomPos[33]];
$arKomSum[$arKomPos[8]][$arKomPos[33]][KomVk.$arKomPos[33]] = $arKomPos[35] + $arKomSum[$arKomPos[8]][$arKomPos[33]][KomVk.$arKomPos[33]];
for($x=0;$x<33;$x++) {
$arKomSum[$arKomPos[8]][$arKomPos[33]][$x] = $arKomPos[$x];
}


}

$fp_write=fopen("kompos_hor.csv","w");

foreach($arKomSum as $temp1) {
Jede Kommissionsnummer
asort($temp1);
foreach($temp1 as $temp) { Jede Satzart
if($last_kom != $temp[KomNr]) {
for($x=0;$x<33;$x++) {
echo " - " . $temp[$x] . " ";
fwrite($fp_write, $temp[$x] . ",");
}
echo " KommNr:" . $temp[KomNr] . " SArt:" .$temp[KomSArt] . " EK:" . $temp[KomEk.$temp[KomSArt]] . " VK:" .$temp[KomVk.$temp[KomSArt]];
fwrite($fp_write, $temp[KomNr] ."," . $temp[KomSArt] . "," . $temp[KomEk] . "," . $temp[KomVk].",");
$last_kom = $temp[KomNr];
}
else {
echo " SArt:" .$temp[KomSArt] . " EK:" . $temp[KomEk.$temp[KomSArt]] . " VK:" .$temp[KomVk.$temp[KomSArt]];
fwrite($fp_write, $temp[KomSArt] . "," . $temp[KomEk] . "," . $temp[KomVk] . ",");
$last_kom = $temp[KomNr];
}
}
echo "<br><br>";
fwrite($fp_write, "\n");
}
fclose($fp_write);


}
?>
Mitglied: Guenni
02.11.2008 um 12:47 Uhr
Hi Christoph,

ehrlich gesagt, blicke ich durch dein Script nicht durch, zumal du noch
eine Funktion convert_KomPos definiert hast, die aber im Script
nirgends aufgerufen wird :-O.
Hab' das Problem (hoffentlich) mal wie folgt gelöst.

01.
<? 
02.
/* 
03.
Datei auftrag.txt zeilenweise einlesen, Beispiel: 
04.
4711-101-109,20-240,30 
05.
4711-105-209,20-240,30 
06.
4711-110-309,20-240,30 
07.
4712-104-109,20-240,30 
08.
4712-110-209,20-240,30 
09.
4712-130-309,20-240,30 
10.
4713-101-23,90-35,90 
11.
4713-110-101,90-139,90 
12.
4810-103-120,90-155,70 
13.
Hinweis: KEINE LEERZEILEN ZWISCHEN DEN AUFTRÄGEN 
14.
*/ 
15.
$handle=fopen("auftrag.txt","r"); 
16.
while($line=fgets($handle)){ 
17.
 $lines[]=$line
18.
19.
fclose($handle); 
20.
/* 
21.
Jede Zeile als Array in einem Array ablegen 
22.
Die Elemente der Arrays können dann mit Hilfe 
23.
der folgenden Konstanten angesprochen werden 
24.
z.B.: array[index][SATZ]; array[index][EK] etc. 
25.
*/ 
26.
foreach($lines as $line){ 
27.
 $arr[]=explode("-",$line); 
28.
29.
/* 
30.
Einige Konstanten, um die Indexe der Arrays anzusprechen 
31.
*/ 
32.
define('AUFTRAG',0); 
33.
define('SATZ',1); 
34.
define('EK',2); 
35.
define('VK',3); 
36.
/* 
37.
Die Auftragsnummern in ein Array ablegen und doppelte 
38.
Auftragsnummern entfernen 
39.
*/ 
40.
foreach($arr as $el){ 
41.
 $nr[]=$el[AUFTRAG]; 
42.
43.
$nr=array_unique($nr); 
44.
/* 
45.
Es existiert nun ein Array mit einmaligen Auftragsnummern 
46.
Die Arrays im Array $arr können nun mit den Auftragsnummern 
47.
angesprochen werden, die Elemente der Arrays mit den Konstanten 
48.
*/ 
49.
$i=0; 
50.
foreach($nr as $el){ 
51.
 $j=101; 
52.
 $auftrag="AuftragsNr: ".$el
53.
 while($arr[$i][AUFTRAG]==$el){ 
54.
  while($j<131){ 
55.
		/* 
56.
		Wenn die SatzNr eines Arrays $j entspricht, werden SatzNr und EK an 
57.
		$auftrag angehangen. $i wird um 1 erhöht, um das nächste Array zu prüfen 
58.
		$j wird nicht verändert, da ja jedes Array eine eigene SatzNr hat. 
59.
		Innerhalb dieser Schleife wird also $j durchgezählt bis 130, $i aber nur solange 
60.
		die Bed. $arr[$i][AUFTRAG]==$el zutrifft. 
61.
		*/ 
62.
    if($arr[$i][SATZ]==$j){ 
63.
		 $auftrag.="-".$arr[$i][SATZ]."-".$arr[$i][EK]; 
64.
		 $i++; 
65.
		}else
66.
					//$auftrag.="-".$j."-0"
67.
					/* 
68.
					Zur Abkürzung der Zeile wird hier nur die Null ohne SatzNr angehangen 
69.
					*/ 
70.
					$auftrag.="-0"
71.
72.
		$j++; 
73.
74.
75.
 /* 
76.
 Auftragszeile mit Zeilenende in ein Array ablegen 
77.
 */ 
78.
 $auftraege[]=$auftrag."\n"
79.
80.
echo "Testausgabe der Auftragszeilen<pre>"
81.
print_r($auftraege); 
82.
echo "</pre>"
83.
/* 
84.
Auftraege in Datei schreiben 
85.
*/ 
86.
$handle=fopen("pub/auftrag.txt","w"); 
87.
foreach($auftraege as $auftrag){ 
88.
 fwrite($handle,$auftrag); 
89.
90.
fclose($handle); 
91.
?>
Gruß
Günni
Bitte warten ..
Ähnliche Inhalte
DNS

DNS in AD - .domäne.int automatisch auffüllen?

gelöst Frage von Fr4nkiDNS3 Kommentare

Hallo Zusammen, in unserem AD gibt es ein merkwürdiges Phänomen. Wir nehmen jetzt einfach mal an, dass wir die ...

Batch & Shell

Leere Array-Werte aus einem Array entfernen

gelöst Frage von ToniHoBatch & Shell3 Kommentare

Hallo zusammen, ich bin dabei ein Powershell-Script zu schreiben, welches diverse Reports generieren kann. Für die Eingabe von SamAccountNames ...

PHP

Array Filtern bei mehreren Werten innerhalb eines Array

gelöst Frage von LorderichPHP3 Kommentare

Hallo zusammen, ich habe folgendes Array: Array ( resource => Array ( 0 => Array ( ID => 3 ...

JavaScript

Javascript Array

gelöst Frage von internet2107JavaScript2 Kommentare

Ich habe folgendes Problem. Ersetze ich die folgenden Zahlen gegen Variablenwerte, bekomme ich nicht das Ergebnis, wie mit festen ...

Neue Wissensbeiträge
Multimedia & Zubehör
AVM Fritz USB WLAN Sticks schneller einschalten
Tipp von NetzwerkDude vor 21 StundenMultimedia & Zubehör

Die AVM Fritz WLAN Sticks haben in der Firmware 2 Modis: Einmal als Massenspeicher und einmal als WLAN Netzwerkkarte ...

Windows Server

Windows Server Backup schlögt Fehl -Lösung 2008-2016

Tipp von BiGnoob vor 23 StundenWindows Server

Hi zusammen , ich möchte gerne einen Lösungstipp abgeben für folgenden fehler: lösung ist folgende:

Humor (lol)
Telekom vs. O2 - 3:2
Erfahrungsbericht von the-buccaneer vor 1 TagHumor (lol)4 Kommentare

Unglaublich aber wahr: Nachdem mein privater Anschluss am 19.04.18 auf VOIP und VDSL umgestellt wurde, hatte ich seitdem 1,5 ...

Batch & Shell

Windows 10 Heimnetzgruppe abgeschaft. Ein Script für einfache Netzwerk - Freigabe im Heimnetzwerk

Anleitung von treehe vor 1 TagBatch & Shell3 Kommentare

Anleitung für eine einfache Netzwerkfreigabe unter Windows 10 Wie weiter hab mal ein kleines CMD - Script gebastelt. Womit ...

Heiß diskutierte Inhalte
Netzwerke
IP-Adresse am zweiten Domänencontroller fest vergeben - Server verschwunden
gelöst Frage von DanielG1974Netzwerke28 Kommentare

Ich hab ein Problem, was ich bisher noch nicht erlebt habe Ich habe erfolgreich einen zweiten Server mit ActiveDirectory ...

Windows Tools
Virtueller Drucker gesucht (Schnittstelle: USB oder Seriell)
gelöst Frage von chrisButterflyWindows Tools21 Kommentare

Hi, ich suche einen virtuellen Drucker, den ich über eine USB oder serieller Schnittstelle ansprechen kann. Dieser Drucker soll ...

Windows Server
Windows Server 2012 - Update - Beim Booten bleibt der Server beim Windows Zeichen stehen
Frage von KeilbachWindows Server17 Kommentare

Hallo Zusammen, ich grüße euch, mein Name ist Michele. Ich bin hier ganz Neu - da ich einfach nicht ...

Windows 10
Weiße Fenster beim Aufruf verschiedener Apps
Frage von 90584Windows 1011 Kommentare

Hallo liebe Leute ! Ich habe ein Problem. Bei verschiedensten Anwendungen, wie z.B. beim Anhang, sind nur unlesbare weiße ...