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
  #1 (permalink)  
Alt 18-03-2005, 09:56
F4llen4ngel
 Registrierter Benutzer
Links : Onlinestatus : F4llen4ngel ist offline
Registriert seit: Mar 2004
Ort: Hannover
Beiträge: 57
F4llen4ngel ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit Array + TimeStamp

Hi!

Folgendes Problem quält mich nun schon seit mehreren Stunden - vielleicht weiss ja einer von euch Rat =) Also:

Ich lese mir aus einer Datenbank bestimmte Timestamps aus,
diese hab ich dann in einem Array und durchlaufe dieses unter folgenden Gesichtspunkten:

- Vergleiche den aktuellen TS mit dem vorherigem TS
- Ist der aktuelle TS GRÖSSER als der vorherige + 1 Stunde (3600)
- wenn ja schreib ihn in ein neues Array an die aktuelle Position +1
- wenn nein schreib ihn an die aktuelle Position + []

Hier mal der Code dafür:
PHP-Code:
for ($ii=1;$ii<=count($aTimeStamps); $ii++)
    {
        
$i=$ii-1;
        
        if(
$i>0
        {
            
$letzterTimeStamp $aTimeStamps[$i-1];
        } 
        else 
        {    
            
$aKlick[$i][] = $aTimeStamps[$i];
        }
        
        if(
$letzterTimeStamp!=null
        {
            if (
$aTimeStamps[$i] >= $letzterTimeStamp+3600
            {
                
$aKlick[$i+1][] = $aTimeStamps[$i];
            }
            else 
            {
                
$aKlick[$i][] = $aTimeStamps[$i];
            }
        }
    } 
Ich bekomme folgendes Array aus dieser Ausgabe:
PHP-Code:
Array
(
    [
0] => Array
        (
            [
0] => 1106224030
        
)

    [
1] => Array
        (
            [
0] => 1106224170
        
)

    [
2] => Array
        (
            [
0] => 1106224339
        
)

    [
3] => Array
        (
            [
0] => 1106224361
        
)

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

    [
5] => Array
        (
            [
0] => 1106225837
        
)

    [
6] => Array
        (
            [
0] => 1106225851
        
)

    [
7] => Array
        (
            [
0] => 1106225911
        
)

    [
8] => Array
        (
            [
0] => 1106225921
        
)

    [
9] => Array
        (
            [
0] => 1106226038
        
)

    [
10] => Array
        (
            [
0] => 1106226068
        
)

    [
11] => Array
        (
            [
0] => 1106226084
        
)

    [
12] => Array
        (
            [
0] => 1106226107
        
)

    [
13] => Array
        (
            [
0] => 1106226352
        
)

    [
14] => Array
        (
            [
0] => 1106226376
        
)

    [
15] => Array
        (
            [
0] => 1106226383
        
)

    [
16] => Array
        (
            [
0] => 1106226426
        
)

    [
17] => Array
        (
            [
0] => 1106226438
        
)

    [
18] => Array
        (
            [
0] => 1106226482
        
)

    [
19] => Array
        (
            [
0] => 1106226494
        
)

    [
20] => Array
        (
            [
0] => 1106226565
        
)

    [
21] => Array
        (
            [
0] => 1106226702
        
)

    [
22] => Array
        (
            [
0] => 1106226987
        
)

    [
23] => Array
        (
            [
0] => 1106227025
        
)

    [
24] => Array
        (
            [
0] => 1106227059
        
)


Wie man aber unschwer erkennen kann - es sei denn ich guck einfach blöd *g* - sind viele Timestamps eben NICHT mehr als eien Stunde von einander entfernt und müssten daher zuammen in einem Container liegen ... kann mir das jemand erklären?

Hier übrigens eine kleinere Timestamp Liste mit der es anscheinend funktioniert
PHP-Code:
Array
(
    [
0] => Array
        (
            [
0] => 1106221317
        
)

    [
1] => Array
        (
            [
0] => 1106222608
        
)

    [
3] => Array
        (
            [
0] => 1106229773
            
[1] => 1106232148
        
)

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

    [
5] => Array
        (
            [
0] => 1106232870
        
)

    [
6] => Array
        (
            [
0] => 1106233078
        
)

    [
7] => Array
        (
            [
0] => 1106234275
        
)

    [
9] => Array
        (
            [
0] => 1106239734
            
[1] => 1106240406
        
)


Hofe es kann mir jemand helfen! Danke
Mit Zitat antworten
  #2 (permalink)  
Alt 18-03-2005, 10:50
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du machst das viel zu kompliziert, daher verlierst du die Übersicht und weißt dann nicht mehr was was ist. Warum denn 'ne for-Schleife mit ii und dann nur noch mit i arbeiten indem du i = ii - 1 setzst? Deine Werte haben keine 3600 Sek. Differenz, aber da du i jedes Mal durch die Zuweisung i = ii -1 erhöht hast, hast du jedes Element in einem neuen Index kopiert, obwohl else immer anspringt.

Besser:
PHP-Code:
<?php
$aTimeStamps 
= array(1106226383,1106226426,1106226438,
                     
1106226482,1106226494,1106226565,
                     
1106226702,1106232987,1106233025,
                     
1106299059);

$j 0// Init
$aKlick[0][0] = $aTimeStamps[0]; // Init
for ($i=1;$i<count($aTimeStamps); $i++) {
    
$letzterTimeStamp $aTimeStamps[$i-1];
    if (
$aTimeStamps[$i] >= $letzterTimeStamp+3600
        
$aKlick[++$j][] = $aTimeStamps[$i];
    else 
        
$aKlick[$j][] = $aTimeStamps[$i];
    
$diff $aTimeStamps[$i] - $letzterTimeStamp;
    echo 
$aTimeStamps[$i].' - '.$letzterTimeStamp.' = '.$diff.'<br />';
}
echo 
'<pre>';
print_r($aKlick);
echo 
'</pre>';
?>
Output


Code:
1106226426 - 1106226383 = 43
1106226438 - 1106226426 = 12
1106226482 - 1106226438 = 44
1106226494 - 1106226482 = 12
1106226565 - 1106226494 = 71
1106226702 - 1106226565 = 137
1106232987 - 1106226702 = 6285
1106233025 - 1106232987 = 38
1106299059 - 1106233025 = 66034

Array
(
    [0] => Array
        (
            [0] => 1106226383
            [1] => 1106226426
            [2] => 1106226438
            [3] => 1106226482
            [4] => 1106226494
            [5] => 1106226565
            [6] => 1106226702
        )

    [1] => Array
        (
            [0] => 1106232987
            [1] => 1106233025
        )

    [2] => Array
        (
            [0] => 1106299059
        )

)
Mit Zitat antworten
  #3 (permalink)  
Alt 18-03-2005, 11:24
F4llen4ngel
 Registrierter Benutzer
Links : Onlinestatus : F4llen4ngel ist offline
Registriert seit: Mar 2004
Ort: Hannover
Beiträge: 57
F4llen4ngel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hmm also so ganz hatt ich deine erklärung zu dem WARUM nicht verstanden ... ?
Mit Zitat antworten
  #4 (permalink)  
Alt 18-03-2005, 11:39
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

was ist denn hieran schwer zu verstehen?

Zitat:
Deine Werte haben keine 3600 Sek. Differenz, aber da du i jedes Mal durch die Zuweisung i = ii -1 erhöht hast, hast du jedes Element in einem neuen Index kopiert, obwohl else immer anspringt.
mach mal folgendes in deiner Schleife:
PHP-Code:
for ($ii=1;$ii<=count($aTimeStamps); $ii++)
    {
        
$i=$ii-1;
        
        if(
$i>0
        {
            
$letzterTimeStamp $aTimeStamps[$i-1];
        } 
        else 
        {    
            
$aKlick[$i][] = $aTimeStamps[$i];
        }
        
        if(
$letzterTimeStamp!=null
        {
            if (
$aTimeStamps[$i] >= $letzterTimeStamp+3600
            {
                 
// hier einfügen
                 
echo 'if wird ausgeführt - '.$i.'<br />';
                
$aKlick[$i+1][] = $aTimeStamps[$i];
            }
            else 
            {
                 
// hier einfügen
                 
echo 'else wird ausgeführt - '.$i.'<br />';
                
$aKlick[$i][] = $aTimeStamps[$i];
            }
        }
    } 
schau dir den Output an, dann weißt du's (hoffentlich )
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

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

Simple Forum PHP ansehen Simple Forum PHP

If you need simple forum or discussion on your website, then you've come to the right place. Simple Forum PHP is a script that is very easy to install and administer.

28.08.2021 nevenov | Kategorie: PHP/ Forum PHP Software
Formmailer Bootstrap 4

Mit dem Formmailer kann man sich eMails über seine Seite zukommen lassen.

08.07.2021 arne-home | Kategorie: PHP/ Formular
Fehlerseite Bootstrap 4

Bei Aufruf einer nicht existierenden Seite, teilen Sie Besuchern mit einer eigenen Fehlerseite mit, dass die gewünschte Seite nicht gefunden wurde. Die eigene Fehlerseite sollte dasselbe Design wie die Website haben. Zudem sollte ein Link zur Startseite a

04.07.2021 arne-home | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

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