Kezdőoldal » Számítástechnika » Programozás » PHP-ban hogyan lehet keresni...

PHP-ban hogyan lehet keresni különböző dátum formátumok között?

Figyelt kérdés

Adott egy asszociatív tömb (ami lehet, szebb lenne, ha nem lenne asszociativ), pl. [ido] => 2020-10-04 15:30 ..., [ido] => 2020-10-05 15:20 ... Van egy dátumom, ami alapján a tömbben szeretnék keresni, viszont ebben nincs feltüntetve az idő (nem timestamp, pl. 2020-10-05). Azt szeretném elérni, hogy valamilyen módon azonosítsam a keresett elemet - feltéve, hogy benne van a tömbben (kiírni, majd törölni a tömbből). Több megoldást is próbáltam, mint például az array_search függvényt, viszont FALSE-t dob, mivel nem tartja azonosnak a két különböző dátumot.

Tudom, hogy a tömb nem épp a legszebb, ezt egy mysql adatbázisból kérdezem le, ahol az [ido] az attribútum/mező.


2020. okt. 5. 15:46
1 2
 11/14 A kérdező kommentje:
Jó lenne az ötlet, de ezesetben nem fogom tudni kiírni az időt. Nekem szükségem van a 15:30:00-ra is, mint adatra, csak addig szeretném figyelmen kívül hagyni, amíg keresek a tömbben.
2020. okt. 5. 20:52
 12/14 A kérdező kommentje:
A működő megoldás, ha végigmegyek a tömbbön ciklussal, mert másképpen nem fogom tudni trimelni a timestamp-ot. Köszönöm a segítségeteket, amennyiben valakinek van jobb ötlete, azt szívesen olvasom.
2020. okt. 6. 09:00
 13/14 anonim ***** válasza:

#5-ös vagyok.


Ok. Kb értem mit akarsz, de ebben az esetben viszont már megkaptad a választ többször is (sőt, van aki levan pontozva, pedig az is tökéletes, csak... "RTFM" és rájönnél hogy a #3-as és #4-es is tök jó ha kiegészíted egy sorral.).


De akkor összefoglalom:

Bár nem derül ki, hogy ez valami natív php-s cucc, vagy használsz-e framework-öt (bármilyen) és ORM-ről kéne esetleg beszélgetnünk ezért mindkét megközelítést leírom.


Ha a lekérést kézzel és/vagy valami query builder-el (frémvörkből:)) rakod össze, akkor kibővítheted egy plusz oszloppal ami csak dátumot ad vissza. (Emellett megkapod az eredeti időt is) Ezt írta le a #10-es. Senki sem mondta, hogy az idő részt ne add át. Egy oszlopot többször lekérhetsz egy select-ben különböző formátumban csak nevezd el másképp.

Aztán nézzük a #3/#4 javaslatokat. Én mondjuk az OOP-s verziót preferálom, de lényegében ugyanez. Tehát fogod a timestamp-et és DateTime objektummá alakítod, majd a format-al lecsíped belőle az időt. Szóval "RTFM": [link]

Tehát valahogy így:

$dt = new DateTime('2012-07-24 11:52:01');

$justDate = $dt->format('Y-m-d');

És meg tudod nézni, hogy egyenlő-e a te dátumoddal.


Végül pedig nézzük meg az ORM-es verziót. A legtöbb keretrendszer esetén (legalábbis amiket én használok ott ezt így lehet/kell megoldani) a model-be simán beleírhatod ezt, sőt van ahol már eleve DateTime objektumot kapsz a db-ből. Szóval a lényeg, hogy az adott modelben létrehozol egy függvényt, aminek nincs bemeneti értéke, mert az adott példány ($this->ido) változójának értékéből a fenti példa alapján visszaadja a dátumot és elnevezed mondjuk "getDateFromTimestamp"-nek így ha ezt hívod meg akkor nem timestamp hanem konkrét dátumot fogsz csak kapni.


Szóval a problémádnak 1000 féle megközelítése és megoldása létezik, persze ennyi információból nem tudunk többet csak azt, hogy a fentiek közül mindegyik jó lehet és működni fog.

2020. okt. 6. 09:04
Hasznos számodra ez a válasz?
 14/14 anonim ***** válasza:
A 100 lekérdezés készítése sem ördögtől való (bár annak ellenére hogy valami szupertitkos atomkísérlet jellege miatt még mindig lóphaszt sem tudunk a problémáról ( nagyon remélem hogy épp a rák ellenszerét modellezed), biztks vagyok benne hogy nem kell hozzá 100 lekérdezés), az előkészített lekérdezések erre is vannak.
2020. okt. 7. 20:56
Hasznos számodra ez a válasz?
1 2

További kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!