[PHP] Rekenen met tijden uit een array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Fire_Bird
  • Registratie: September 2001
  • Laatst online: 20-09 09:07
Heb inmiddels geen idee meer waar ik het moet zoeken..
Ik heb een array met een aantal tijden erin, als ik de som van de array wil bepalen krijg ik 2 eruit..
Het zijn tijden die erin staan en ik moet gewoon het aantal uren, minuten, seconden hebben..

Dit zijn de waardes die ik uit mijn array tover, heb ze uit een database gehaald met de functie timedifference, stop ze in een array, uitlezen gaat prima..maar hoe het totaal te krijgen?
Iemand ideetjes?

02:16:44
00:16:49
00:00:14
00:04:38
00:00:11
00:00:45
00:00:22

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Het klopt toch ook? 02+6*00=2.. :)

Maar waarom laat je de database niet gelijk het totaal berekenen? Dus in het geval van MySQL iets als select SEC_TO_TIME(SUM(TIME_TO_SEC(a))) from ...

(In php kun je als het altijd minder dan een dag is als hack strtotime(x,"0-0-0") en strftime("%H:%M:%S",x) gebruiken. Anders wordt het denk ik zelf iets maken, dit voorbeeld is er al.)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
En anders moet je elke waarde splitten op de dubbele punt en de uren, minuten en seconde los optellen. Daarna de 60-vouden uit de seconden halen en dan uit de minuten en je bent er.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je verwacht de string "02:16:44" bij "00:16:49" op te tellen en daar netjes "02:33:33" uit te krijgen? Ik moet je teleurstellen, voor PHP is een string een string, en als je ze probeert op te tellen, dan pakt PHP alleen cijfers; zodra de parser een karakter leest dat geen cijfer is, is volgens PHP het cijfergedeelte van de string voorbij en dat gaat hij dus optellen. In jouw geval doe je dus inderdaad, zoals pedorus al opmerkt, 2+0+0+0+0+0+0 = 2.

Als je dit makkelijk in je query kan inbouwen, dan zou ik dat proberen. Zo niet, dan is het inderdaad zoals Jaaap zegt een kwestie van een functie schrijven die één voor één de losse onderdelen van de string optelt en dan weer samenvoegt tot een nieuwe string.

Overigens: Waar hoort mijn topic? WEB>>PRG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.