Portál AbcLinuxu, 3. listopadu 2025 22:35
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.