Datuve :: Forums :: Arhīvs :: elseif problēma ar php

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 63

Reģistrētie lietotāji online: 0

Viesi online: 63

Datuve.lv video
Top.LV

elseif problēma ar php

Ievietoja: Killercompany @ 2009.08.24 20:23  

sweiki.

tātad daļa no koda:
elseif(strpos($address, 'lmier')==true ||
  strpos($address, 'zekne')==true ||
  strpos($address, 'rzgal')==true ||
  strpos($address, 'ludza')==true ||
  strpos($address, 'aivie')==true ||
  strpos($pilseta, 'lmier')==true ||
  strpos($pilseta, 'zekne')==true ||
  strpos($pilseta, 'rzgal')==true ||
  strpos($pilseta, 'ludza')==true ||
  strpos($pilseta, 'iviek')==true)
{

mērķis šādi atlasīt pilsētas valmiera, rēzekne, bērzgale, ludza, aiviekste. nu respektīvi ja ir atrasts substring "zekne" tad datubāzē netiek ierakstīts. tas neizdodas ar ludzu un aivieksti.

kāpēc stringā "ludza" nav substringa "ludza" un stringā "aiviekste" nav substringa "iviek"?

vai varbūt kāds var ieteikt labāku stringu filtrēšanu par strpos un elseif. jo šis jau noteikti nav labākais variants.

Komentāri:

#1 usver @ 2009.08.24 21:56

1) uzskati, ka etalons ir if (strpos($pilseta, 'rzgal') !== false){ .. }, nevis kā savādāk

2) sameklēt ar koda bloku var tā:

$stringi = array('lmier','zekne','ludza');

$zinama_pilseta_found = false;
foreach($stringi as $viens_strings){  // apstaigaat stringus
 if (strpos($address, $viens_strings) !== false){ // ja ir kaut kas atrasts
    $zinama_pilseta_found = true; // atzimet, ka ir atrasts
 }
}

if ($zinama_pilseta_found){
 echo 'atradām kaut ko ';
}

#2 Killercompany @ 2009.08.24 22:14

super. 1. strādā. 2. vēl pārbaudīšu.
paldies tev.

p.s
interesanta valoda php ja "==true" nav tas pats kas "!==false". a to nevarēju saprast kāpēc visur lieto "!==false". stulbs ka nepamēģināju pats.

#3 ExtremeR @ 2009.08.24 22:20

Nezinu kāpēc vispār tiek lietots !==, vieglāk nav !=?

EDIT: ahh, skaidrs, 0th character. :)

#4 usver @ 2009.08.24 22:23

#3:  ja nav atrasts, tad atgriež FALSE. ja atrod 0-to, tad atgriež 0.

php ir ērti pierakstīt salīdzinājumu, nav jāveido katram tipam savas salīdzināšanas funkcijas. if ($piezimes || $kredita_apjoms){  } <-- elementārs pieraksts. Virspusējai salīdzināšanai pilnībā pietiek.

#5 ExtremeR @ 2009.08.24 22:42

usver rakstīja:

#3:  ja nav atrasts, tad atgriež FALSE. ja atrod 0-to, tad atgriež 0.

Nu jā, cik sapratu, tad 0 ir arī FALSE, tāpēc 0 != FALSE atgrieztu FALSE, ja atrastu 0-to, bet ar !==(===)  tiek pārbaudīts vai abas puses ir/nav vienāda tipa.