Portál AbcLinuxu, 13. května 2025 03:27
Zdravím,
teď jsem narazil na asi docela velký problém.
Při hledání v poli mi to tam najde hodnotu která tam není :)
Konkrétně jde o kontrolu voucherů ze Slevomatu, zda zákazník nezadá jeden voucher 2x.
Bohužel si z nějakého důvodu PHP myslí že 6089139600E-908 = 3767958990E-624.
Zkoušel jsem to php sanboxu a zjistil, že to blbne až od PHP v 5.2 :) V nižších verzích to funguje správně.
Výsledek následujího kódu je FIND IN 2
viz http://sandbox.onlinephpfunctions.com/code/df586ba56c8547a21853cade3dd5659195de4852
To samé dělá i in_array, vrací TRUE.
Vyřešil jsem to tím, že pole převedu na řetězec oddělený | a potom to hledám pomocí STRPOS, ale docela mne to rozhodilo.
Co vy na to?
Dan
$allCode=array( 0 => "4911843820E-152", 1 => "9189208690C-823", 2 => "6089139600E-908", 3 => "1847645250C-229", ); $findCode="3767958990E-624"; $search = array_search($findCode,$allCode); if($search !== false){ echo "FIND IN ".$search; }else{ echo "NO FIND"; }
Řešení dotazu:
Pardon, ten link se mi nepovedl
http://sandbox.onlinephpfunctions.com/code/df586ba56c8547a21853cade3dd5659195de4852
"0" přece je false.Ale tazatel nemá "0", ale string s nějakým bordelem. Jenom PHP se snaží být strašně chytré a vyrábí ze stringů floaty a další věci podle potřeby.
Ale považuji za hloupost generovat stringy, které jsou čísla.Jenže to je API slevomatu mimo jeho kontrolu. (a nejsou to čísla, podívej se na ty ostatní - 9189208690C-823)
"AA-".$SlevomatID
, a pak v celém mém programu to bude vždy a pořád string, a až kód budu posílat Slevomatu tak prefix zase utrhnu.
<?php $a = "3767958990E-624"; $b = "6089139600E-908"; echo ($a == $b) ? "rovno" : "nerovno";
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.