php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 06-04-2008, 12:31
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Einen zweiten Thread zu öffnen ist in diesem Fall völlig unnötig, ich gehe einfach mal davon aus, dass dein Array noch garnicht richtig sortiert ist - oder hast du es zwischendurch schon einmal ausgegeben?
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #17 (permalink)  
Alt 06-04-2008, 12:59
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So
PHP-Code:
<?php
date_default_timezone_set
('Europe/Berlin');
$lines file_get_contents('/var/www/web22/log/test.txt');
foreach (
explode("\n"$lines) as $line)
     {
    
$result[] = explode('|'$line);
    }

$sortMe $result;
$sortCol = array();
foreach (
$sortMe as $key => $row)
#while(list($key,$row)= each($sortMe));
    
{
    
$sortCol[$key] = strtotime(implode('-',array_reverse(explode('.',$row[3]))));
    }
$result[] =  array_multisort($sortColSORT_DESC$sortMe);


$path "/var/www/web22/log/";
$file "fertig.txt";
$size count($result);

if(
file_exists($path.$file) && is_writeable($path.$file))
{
    
$fp fopen($path.$file'w');
    foreach( 
$result as $i=>$value )
    
#    for ($i = 0; $i < $size; $i++)
    
{
        
$size1count($result[$i]);
            if(isset(
$result[$i][0]) && isset($result[$i][1]) && isset($result[$i][2])
            && isset(
$result[$i][3]) && isset($result[$i][4]) && ($result != ""))
            {
            
$zeilen =  "<a href=\"".$result[$i][0]."\">".$result[$i][1]."</a><b>" 
            
.$result[$i][4]."</b>".[".$result[$i][3]."".$result[$i][2]."<br>";        
            fputs($fp, "
$zeilen n");

            }
    }
    fclose($fp);
}else{
    echo "
Datei ".$path.$file." ist nicht beschreibbar oder exisistiert nicht!";
    }

echo "
<pre>";
print_r( $sortMe  );
echo "
</pre>";


?>

Geändert von janein (06-04-2008 um 14:05 Uhr)
Mit Zitat antworten
  #18 (permalink)  
Alt 06-04-2008, 15:40
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das steht in der Datei:
Zitat:
o|b|c|07.04.08|1
t|w|c|09.04.08|0
u|b|z|10.04.08|0
pp|bz|cu|02.04.08|1
So sieht das array aus:
PHP-Code:
Array
(
    [
0] => Array
        (
            [
0] => u
            
[1] => b
            
[2] => z
            
[3] => 10.04.08
            
[4] => 0
        
)

    [
1] => Array
        (
            [
0] => t
            
[1] => w
            
[2] => c
            
[3] => 09.04.08
            
[4] => 0
        
)

    [
2] => Array
        (
            [
0] => o
            
[1] => b
            
[2] => c
            
[3] => 07.04.08
            
[4] => 1
        
)

    [
3] => Array
        (
            [
0] => pp
            
[1] => bz
            
[2] => cu
            
[3] => 02.04.08
            
[4] => 1
        
)

    [
4] => Array
        (
            [
0] => 
        )


Es klappt jetzt übrigens, auch das geschriebene array ist jetzt sortiert :-)
Danke, danke für Eure Vorschläge!

Nur dies offset Meldung stört ...

Geändert von janein (06-04-2008 um 16:17 Uhr)
Mit Zitat antworten
  #19 (permalink)  
Alt 06-04-2008, 16:19
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datei in array einlesen - immer ein Key mehr - warum?

Das steht in der Datei:
Zitat:
o|b|c|07.04.08|1
t|w|c|09.04.08|0
u|b|z|10.04.08|0
pp|bz|cu|02.04.08|1
Zum einlesen:
[PHP]
$lines = file_get_contents('test.txt');
foreach (explode("\n", $lines) as $line)
{
$result[] = explode('|', $line);
}
[⁄PHP]

So sieht das eingelesene array aus:
PHP-Code:
Array
(
    [
0] => Array
        (
            [
0] => u
            
[1] => b
            
[2] => z
            
[3] => 10.04.08
            
[4] => 0
        
)

    [
1] => Array
        (
            [
0] => t
            
[1] => w
            
[2] => c
            
[3] => 09.04.08
            
[4] => 0
        
)

    [
2] => Array
        (
            [
0] => o
            
[1] => b
            
[2] => c
            
[3] => 07.04.08
            
[4] => 1
        
)

    [
3] => Array
        (
            [
0] => pp
            
[1] => bz
            
[2] => cu
            
[3] => 02.04.08
            
[4] => 1
        
)

    [
4] => Array
        (
            [
0] => 
        )



array [4] ist leer, aber wieso ist es da und wie werde ich es los, es werden doch nur 4 Zeilen eingelesen, oder nicht?

Geändert von janein (06-04-2008 um 16:27 Uhr)
Mit Zitat antworten
  #20 (permalink)  
Alt 06-04-2008, 16:29
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ganz einfach, wenn du beim schreiben immer \n am Ende dran hängst und beim explode \n als Trenner verwendest, wundert dich das?
Mit Zitat antworten
  #21 (permalink)  
Alt 06-04-2008, 16:29
krel
 Registrierter Benutzer
Links : Onlinestatus : krel ist offline
Registriert seit: Nov 2006
Ort: Osnabrück
Beiträge: 424
krel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich tippe darauf, dass am Ende der Datei noch eine leere Zeile steht?!
Mit Zitat antworten
  #22 (permalink)  
Alt 06-04-2008, 16:54
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von asp2php
ganz einfach, wenn du beim schreiben immer \n am Ende dran hängst und beim explode \n als Trenner verwendest, wundert dich das?
Ok, das leuchtet ein :-)

Wie macht man es besser, eine Datei Zeile für Zeile einzulesen - einfach ein anderes Zeichen wie #⁄n verwenden und nach # trennen?
Mit Zitat antworten
  #23 (permalink)  
Alt 06-04-2008, 17:01
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von janein
Ok, das leuchtet ein :-)

Wie macht man es besser, eine Datei Zeile für Zeile einzulesen - einfach ein anderes Zeichen wie #⁄n verwenden und nach # trennen?
entweder mit file einlesen oder mit fopen und fgets
Mit Zitat antworten
  #24 (permalink)  
Alt 06-04-2008, 17:03
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Ok, das leuchtet ein :-)
Wohl noch nicht ganz - zum besseren Verständnis: Man nehme immer ein Wort und hänge "\n" daran:
Code:
Foo\n        1. Zeile hinzufügen
Bar\n        2. Zeile hinzufügen
Blubb\n     3. Zeile hinzufügen
Wenn du das jetzt nach \n explodest passiert folgendes:
Code:
[Foo]\n[Bar]\n[Blubb]\n[]
Wie du siehst ist das letzte Element leer. Die einfachste Möglichkeit das zu verhindern ist beim Einlesen zu prüfen ob der aktuelle Teil leer ist:
PHP-Code:
if(!empty($line)) {
     
$result[] = explode('|'$line);

__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #25 (permalink)  
Alt 06-04-2008, 17:23
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von tontechniker
... Die einfachste Möglichkeit das zu verhindern ist beim Einlesen zu prüfen ob der aktuelle Teil leer ist:
PHP-Code:
if(!empty($line)) {
     
$result[] = explode('|'$line);

Danke für die ausführliche Erkärung! Durch die andere Art des Einlesens, sind die "Leerstellen" auch verschwunden. So mache ich es jetzt:
PHP-Code:
$lines file ('test2.txt');
#print_r($lines);

foreach ($lines as $key => $line)
    {
    
$result[] = explode('|'$lines[$key]);
    } 
Ich werde Deine Überprüfungsmethode auch noch probieren, es könnte ja auch mal ein Wert leer sein, ohne dass er am Ende der Datei erzeugt wurde. Dafür scheint mir Dein Tipp hilfreich.

Was ist der Unterschied zu
PHP-Code:
if(isset($line)) {
     
$result[] = explode('|'$line);

?

Geändert von janein (06-04-2008 um 17:31 Uhr)
Mit Zitat antworten
  #26 (permalink)  
Alt 06-04-2008, 17:53
TheFish511
 Newbie
Links : Onlinestatus : TheFish511 ist offline
Registriert seit: Feb 2008
Beiträge: 76
TheFish511 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zb. dass "" bei !empty() false wird und bei isset() true ist.
isset() prüft eigentlich nur, ob die Variable vorhanden ist und nicht gleich null ist.
Die ganzen Unterschiede kannst du dir hier anschauen:
http://de.php.net/manual/de/types.comparisons.php

Geändert von TheFish511 (06-04-2008 um 17:56 Uhr)
Mit Zitat antworten
  #27 (permalink)  
Alt 07-04-2008, 09:12
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
function sortArray($a,$b){ 
  
$timeA explode('.',$a[3]); 
  
$timeB explode('.',$b[3]); 
  
$timeA mktime(0,0,0,$timeA[1],$timeA[0],$timeA[2]); 
  
$timeB mktime(0,0,0,$timeB[1],$timeB[0],$timeB[2]); 
  if(
$timeA == $timeB){ 
    return 
0
  } 
  return (
$timeA<$timeB)?-1:1

$str[0] = 'o|b|c|07.04.08|1'
$str[1] = 't|w|c|09.04.08|0'
$str[2] = 'u|b|z|10.04.08|0'
$str[3] = 'pp|bz|cu|02.04.08|1'
$arr = array(); 
foreach(
$str as $wert){ 
  
$arr[] = explode('|',$wert); 

usort($arr,"sortArray"); 
echo 
'<pre>'
var_dump($arr); 
echo 
'</pre>'
Funzt wie du auch hier sehen kannst. Übrigens habe ich das bereits in meinem ersten Post geschrieben...

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Newsmanager

Der Newsmanager ist ein Newssystem und Newsletter in einem. Mit WYSIWYG Editor und E-Mail import aus einer bestehenden MySql Datenbank sowie dynamische Kategorien / Themen Filter.

11.09.2019 Stephan_1972 | Kategorie: PHP/ News
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

11.09.2019 Stephan_1972 | Kategorie: PHP/ Webservice
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:11 Uhr.