айнымалы жол (12)

Менде жол бос болмаса ақиқат және жол бос болса жалған мәнін қайтаратын isNotEmpty функциясы бар. Мен ол арқылы бос жолды өткізсем, ол жұмыс істемейтінін білдім.

Функция isNotEmpty($input) ( $strTemp = $input; $strTemp = trim($strTemp); if(strTemp != "") //Сонымен қатар бұл әрекет "if(strlen($strTemp) > 0)" (қайтару шын ) қайтару false ;

Жол isNotEmpty арқылы тексеріледі:

If(isNotEmpty($userinput["phoneNumber"])) ( //телефон нөмірін растау ) else ( echo "Телефон нөмірі енгізілмеген
"; }

Егер жол бос болса, орындалмаса, неге екенін түсінбеймін, біреу бұл туралы біраз түсінік бере алады.

Жауаптар

егер сізде сериялық_нөмір өрісі болса және бос орынды тексергіңіз келсе

$сериялық_нөмір = кесу($_POST); $q="user_id="$_SESSION" болатын өнімнен * таңдау"; $rs=mysql_query($q); while($row=mysql_fetch_assoc($rs))( if(empty($_POST["үтіктер"]))( $irons=$row["product1"]; )

осылайша басқа бос функция бар циклдегі барлық циклдар арқылы қайталауға болады

Жауап берудің орнына (мәселеңізді шешіп қойғансыз деп ойлаймын), мен сізге кеңес беремін.

Мен басқаларды білмеймін, бірақ мен мынадай нәрсені көргенде қатты тітіркенемін:

егер(<>) ( true қайтару; ) жалған қайтару;

бұл талғампаз «қайтаруды қажет етеді (<>); " Әрқашан кодты қарап шығыңыз және бұл логиканы жойыңыз. үшін әрқайсысыжағдайда IF мәлімдемесі қажет емес.

Түрлерді тексеру үшін мен өзімнің is_string функциясын жазып жатырмын және ұзындықты тексеру үшін strlen.

emptyStr($str) функциясы (қайтару is_string($str) && strlen($str) === 0; ) emptyStr("") басып шығару ? "empty" : "бос емес"; // бос

ӨҢДЕУ: Жолдың құрамында жоқтығын тексеру үшін қию функциясын пайдалануға болады.

Is_string($str) && strlen(trim($str)) === 0;

PHP-де empty() деп аталатын кірістірілген функция бар. Сынақ if(empty($string))(...) php.net сілтемесі: php empty теру арқылы орындалады.

Сізде жауап бар, бірақ сіздің жағдайда пайдалана аласыз

Бос қайтару($input);

Қайтару is_string($input);

Қарапайым мәселе. Өзгерту:

If(strTemp != "")

If($strTemp != "")

Мүмкін сіз оны келесіге өзгерте аласыз:

If($strTemp !== "")

өйткені != "" PHP түрін автоматты түрлендіруге байланысты 0 сандық және басқа бірнеше жағдайларды өткізсеңіз, шын мәнін қайтарады.

Сондай-ақ PHP-де бос() функциясы бар екенін есте сақтаңыз.

PHP бос жолды жалған деп бағалайды, сондықтан сіз жай ғана пайдалана аласыз:

Егер (trim($userinput["phoneNumber"])) ( // телефон нөмірін растаңыз ) else ( echo "Телефон нөмірі енгізілмеген
"; }

Мен әрқашан бос жолды тексеру үшін regex пайдаланамын, ол CGI/Perl, сондай-ақ Javascript күндерінен басталады, сондықтан неге мысалы PHP емес (тексерілмеген болса да)

preg_match қайтару("/\S/", $input);

Мұндағы \S бос орынсыз кез келген таңбаны білдіреді

Тек strlen() функциясын пайдаланыңыз

Егер (strlen($s)) ( // бос емес )

Мен жақында өзіме дәл осындай сұрақ қойдым.
Бірнеше бар мүмкін шешімдер, 3 жарамдысы бар:

  • s.indexOf(бастаушы) === 0
  • s.substr(0,starter.length) === стартер
  • s.lastIndexOf(стартер, 0) === 0 (Марк Байердің жауабын көргеннен кейін қосылды)
  • циклды пайдалану:

    Функция startsWith(s,starter) ( for (var i = 0,cur_c; i)< starter.length; i++) { cur_c = starter[i]; if (s[i] !== starter[i]) { return false; } } return true; }

Мен циклды пайдалануды қамтитын соңғы шешімді кездестірген жоқпын.
Бір қызығы, бұл шешім бірінші 3-тен айтарлықтай жоғары.
Міне, мен осы қорытындыға келу үшін jsperf сынағы: http://jsperf.com/startswith2/2

ps: ecmascript 6 (гармония) жолдар үшін өзінің startsWith әдісін ұсынады.
Ойлап көріңізші, егер олар осы өте қажет әдісті бірінші нұсқаға қосуды ойласа, қанша уақыт үнемделген болар еді.

Жаңарту

Стив қосқан 2 циклды оңтайландыру бар екенін ескеріңіз, екеуінің біріншісі жақсы өнімділікті көрсетті, сондықтан мен бұл кодты төменде орналастырамын:

Функция startsWith2(str, префикс) ( if (str.length< prefix.length) return false; for (var i = prefix.length - 1; (i >= 0) && (str[i] === префикс[i]); --і) жалғастыру;< 0; }

қайтару i INРНР мағыналары
FALSE және NULL және олардың байланысты мәндері әдетте басқа тілдерде қолданылатынынан ерекшеленеді және өздерінің айқын емес ерекшеліктеріне ие.
Мақалада осы ерекшеліктер талқыланады.

Жаңадан бастағандар үшін бұл толық суретті көру үшін, тәжірибелі оқырмандар үшін - егер қандай да бір нюанс ойларын өзгертсе, жадтарын жаңарту үшін пайдалы болуы мүмкін.

If операторларында FALSE
  • PHP құжаттамасына сәйкес логикалық мәнге көшіруден кейін келесі мәндер ЖАЛҒАН болады:
  • логикалық мәннің өзі ЖАЛҒАН
  • бос жол («») және «0» жолы.
  • бос массив (массив) – массив().
  • нөлдік мүше айнымалылары бар нысан (тек PHP 4, осы мақалада қарастырылмаған)
  • SimpleXML нысандары (осы мақалада қарастырылмаған)
Бұл дегеніміз, егер мұндай мәндер шартқа берілсе:
егер (…) жаңғырық «1»; басқа жаңғырық «0»;
содан кейін «0» жолы басып шығарылады.

Егер айнымалының мәні орнатылмаса (орнатылмаған), онда ескерту де берілуі мүмкін. Естеріңізге сала кетейік, шарттағы ескертуді айнымалының алдына @ жазу арқылы жоюға болады.

Мысалы:

Егер (@$undefVar) (…)
Бірақ @ мәнін мұқият ойластырған және басқа қолайлы нұсқалар болмаған төтенше жағдайларда ғана пайдалану керек. isset() функциясын қараңыз.

is_null() функциясы және тіл isset() және empty() конструкцияларын жасайды.

is_null() ешбір мән тағайындалмаған немесе NULL мәні тағайындалған айнымалылар үшін ғана TRUE мәнін қайтарады.
isset() is_null() мәнімен салыстырғанда бір-бір логикалық мәндерді қайтарады.
Егер айнымалыға мән тағайындалмаса, онда is_null() ешбір ескерту жасамайтын isset() функциясына қарағанда "Анықталмаған айнымалы" ескертуін береді.
Еске салайық, айнымалының мәнін жою үшін unset() функциясын пайдалануға болады. Сондай-ақ, айнымалы мәнді оқу әрекеті кезінде компилятордың ескертулерін болдырмау үшін осы мақсат үшін NULL мәнін тағайындауға болады.

Айнымалылардан айырмашылығы, тұрақтылармен жұмыс істеу үшін анықталған() құрылымын пайдалану керек екенін ескеріңіз.

Жолды көрсету

Жалған тұрақтылардың жолдық көрінісін қарастырайық.
Мысалы, біріктіру мәндерді төмендегі кестеде көрсетілген келесі жолдарға түрлендіреді:

Жолдарға түрлендіру тақырыбы ресми веб-сайтта Жолға түрлендіру параграфында толығырақ сипатталған.

Салыстыру операторлары

Салыстыру операторларына көшейік.
Барлық жалған мәндер " == " операторы арқылы FALSE-мен салыстырғанда күткендей ақиқат болып шығады.
Бірақ жалған жол тұрақтыларын бір-бірімен салыстыру кезінде транзитивтілікке сенбеу керек.
Мұнда жалған мәндерді салыстыруға арналған толық кесте берілген (плюс кесте элементтерін білдіреді, олар « != " операторы арқылы салыстырылған кезде шынайы мәнді қайтарады:

$undef – мән тағайындалмаған айнымалы

Кестеден кейбір жағымды қорытындылар жасауға болады:
1. Егер біз тек жолдарды қолданатынымызды білсек, онда біз оларды қауіпсіз салыстыра аламыз және «» (бос жол) «0»-ге тең болады деп алаңдамаймыз.
2. Массивтер ешқашан жолдарға, бүтін сандарға немесе нақты сандарға тең болмайды.

Әртүрлі жалған константалардың түрлері әртүрлі болғандықтан, оларды ажырату үшін === және !== жұбын пайдалануға болады.
=== операторы жалған мәндердің барлық жұптары үшін false мәнін қайтарады.
Аргументтер үшін ғана шын мәнді қайтарады, олардың біреуіне NULL мәні тағайындалған, ал екіншісіне ешқандай мән тағайындалмаған.

NULL мәні бар айнымалылар мен анықталмаған айнымалылар арасындағы айырмашылық

=== операторы NULL мәні бар айнымалыларды мән тағайындалмаған айнымалылардан басқа барлық жалған мәндерді ажыратуға мүмкіндік береді.

Мұндай айнымалы мәндерді get_defined_vars() функциясы арқылы ажыратуға болады.

$var айнымалысына мән тағайындалғанын анықтау қажет болса, мұны істеу үшін келесі код үзіндісін пайдалануға болады:
if (array_key_exists("var", get_defined_vars())) ( echo "var анықталған"; // $var NULL тағайындалған) басқа ( echo "var анықталмаған"; // $var анықталмаған немесе орнатылмаған($ var) шақырылды)

Қорытындылар

Сіз PHP-де екі жалған мән бір-біріне тең болмауы мүмкін екенін және бір қарағанда әр түрлі болып көрінетін айнымалылар салыстырған кезде бірдей болуы мүмкін екенін әрқашан есте ұстауыңыз керек. Мұндай тосын жағдайларды болдырмау үшін === және !== операторларын пайдалануға болады.

Массивтермен жұмыс істегенде, тосын жағдайларды болдырмау үшін мәндерді кепілдік берілген әртүрлі индекстерге түрлендіру функциясын жазуға болады. Осыдан кейін массивтің элементтеріне тек оның көмегімен қол жеткізуге болады. Бұл бағдарламаны баяулатуы мүмкін, бірақ тосын жағдайларды болдырмауға көмектеседі.

Егер жолдармен жұмыс істегенде жолдың бос екенін тексеру қажет болса, бастауыш бағдарламашылар әдетте бұл функцияны пайдаланады. strlen(). Бұл функция өте жылдам, себебі ол ешқандай есептеулерді орындамайды, бірақ жай ғана zval тілінде қолжетімді жол ұзындығының бұрыннан белгілі мәнін қайтарады (PHP айнымалы мәндерді сақтау үшін C құрылымын пайдаланады). Бірақ бәрібір, өйткені strlen()- бұл функция, ол сәл баяу, себебі ол шақырылған кезде кіші әріпке түрлендіру және хэш кестесін іздеу сияқты бірнеше әрекеттерді қажет етеді. Кейбір жағдайларда кодты пайдалану арқылы орындалу жылдамдығын арттыруға болады бос()..., бірақ және бос()Сіз оны әлі де аздап оңтайландыра аласыз.

Мысал келтірейікМысалы кескін жолын тексеру, функция жолдың бос екенін тексереді, содан кейін оны басқа жолмен ауыстырыңыз, мысалы, “images/noimage.jpg”.

Осылайша, барлық тапсырма жол түріндегі айнымалы мәннің бос екенін тексеруге дейін жетеді. 4 жолды қолданып көрейік:

  • if(strlen($img_path)>0)
  • егер($img_path(0))
  • егер(бос($img_path))
  • және соңғы үшін тағы бір жол.

Сонымен, біз бірінші жолмен жазамыз:

Функция check_image_path($img_path ) ( if (strlen ($img_path ) >0 ) ( $img_path = "images/noimage.jpg"; ) қайтару $img_path; )

Тестілеуді жүргізейік, орташа сынақ уақытын алды 1.43795800209 сек.

Бұл туралы біраз ойланып көрсеңіз... Сіз бүкіл жолға емес, жолдың бірінші таңбасына бірден қол жеткізе аласыз. Егер бірінші таңба болса, онда жол бос емес. Жолдағы бірінші таңба «0» санымен нөмірленеді.

Функция check_image_path($img_path) ( if ($img_path ( 0 ) ) ( $img_path = "images/noimage.jpg"; ) қайтару $img_path; )

орташа сынақ уақытын алды 1.19431300163 сек., ойнаған уақыттың 17%

Енді empty() арқылы жазуға тырысайық:

Функция check_image_path($img_path) ( if (бос ($img_path) ) ( $img_path = "images/noimage.jpg"; ) қайтару $img_path; )

орташа сынақ уақытын алды 1.1341319084 сек., алдыңғы мысалдағы ойнатылатын уақыттың 5%

Енді жоғарыдағы соңғы және соңғы мысалды қарастырайық. Мұны қалай біріктіруге болатынын көрейік. ойланыңыз... тағы қалай оңтайландыруға болады?

Функция check_image_path($img_path) ( if (бос ($img_path ( 0 ) ) ) ( $img_path = "images/noimage.jpg"; ) қайтару $img_path; )

орташа сынақ уақытын алды 1.07465314865 сек., және біз тағы да уақыттың 5% жеңдік...

Бұл қалай жұмыс істейді және неге жылдамырақ? Бірақ $img_path(0)бірінші таңбаны..., содан кейін функцияны қайтарады бос()бос жолды тексереді... алдыңғы мысалдан айырмашылығы функцияға бүкіл жол емес, тек бір таңба беріледі. Осылайша, бірінші мысалдан соңғысына дейін жеңіске жеттік 25% уақыт.

Заманауи бағдарламалау ұзақ уақыт бойы типтелмеген айнымалыларды сәтті манипуляциялауда. Айнымалының түрін алдын ала көрсету мүмкін емес және оны бағдарламаны орындау кезінде өзгертуге болады.

Бұл тұжырымдама жалпы бағдарламалау парадигмасының орталық бөлігіне айналды. Бағдарламалау дәуірінің басында дәл осындай сенімді тілдер бағдарламашыдан айнымалы мәндерді алдын ала анықтауды талап етті және оларға заңсыз ештеңе берілмеуін қатаң қамтамасыз етті. Айнымалы өз түрін өзгертетіні туралы бұрын бағдарламаларда да, бағдарламалау тілдерінде де түсінік болған емес.

Бос және жоқ туралы

PHP empty() функциясы isset() функциясына кері функция болып табылады және кейбір арнайы пайдалану мүмкіндіктеріне ие. Егер айнымалы болмаса, онда бірінші функция оң жауап береді және оның нәтижесі ақиқат, ал екіншісі теріс жауап береді, яғни оның мәні жалған болады.

Анықтау бойынша isset() айнымалының бар екенін тексеруге арналған. Айнымалының не және қалай тағайындалғаны маңызды емес, бастысы оның бар болуы және unset() функциясы арқылы жойылмайды. isset() функциясының нәтижесі оң - шын болады. Есте сақтау маңызды, егер $iVar = 0; онда isset($iVar) ақиқат болады, бірақ бос ($iVar) да ақиқат болады.

Бірінші жағдайда нәтиже айнымалының бар екенін білдіреді, екінші жағдайда айнымалы бос, яғни жол («0») немесе сан (бөлшек -) кез келген нысандағы «0» мәні. 0,0 немесе бүтін - 0) бірдей: empty($iVar) ақиқат болады.

Қауіпсіздік және бақылау туралы

Тәжірибе көрсеткендей, типтелмеген тілдер бағдарламашыға көбірек еркіндік береді, бірақ оның алгоритммен жұмыс істеуге деген көзқарасы жауаптырақ деп есептейміз.

РНР орнатылған семантиканы қолдайтын, қателері аз, бірақ мұқият назар аударуды қажет ететін заманауи синтаксисті ұсынады. Мысалы, кез келген функцияны шақыру параметрлердің белгілі бір санын қажет етеді.

Функцияны шақыру кезінде барлық параметрлерді берудің қажеті жоқ, олардың тек маңызды бөлігін ғана беруге болады; Функция «міндетті» барлық параметрлердің болуын және болуын тексеруі керек. Жетіспейтін немесе қате мәндері барлар қалыпты пішінге келтіріліп, қажетті мәндер тағайындалуы керек.

Бұл тұрғыда PHP empty() функциясы өте маңызды. Өрнек:

$a = "1;2" + 20

$a айнымалысына 21 мәнін тағайындайды, өйткені өрнектің бірінші бөлігі 1, ал екіншісі 20 болады.

Нәтиже типтік нөмірде болады және PHP empty($a) функциясының нәтижесі жалған болады, яғни $a айнымалысы бос емес.

Бұл контексте функция бар:

funcTest($a ​​= 0, $b = 20)

Қоңырау шалғанда:

$res = funcTest($aVal, $bVal)

қалағанға, яғни функцияның нәтижесіне ие болады. Ал шақырғанда:

  • $res = funcTest($aVal. $bVal)

Функцияның денесінде "$aVal . $bVal" мәні бар бір ғана параметр бар және бұл параметр таңбалар жолы ретінде түсіндірілетін болады.

Нысандар мен массивтер үшін PHP empty().

Тіл синтаксисінде объектілермен және массивтермен жұмыс істеуге арналған құрылымдар мен функциялардың жеткілікті саны бар, бірақ олардың бар болуын және мәннің болуын тексеру тұрғысынан айнымалылардан ерекше айырмашылықтар жоқ.

PHP бос (массив) – бос (қарапайым айнымалы) шақыруға баламалы. Дегенмен, нысандарға қатысты өте маңызды ойлар бар. Объектінің бар болуын (isset) тексеруге келетін болсақ, сұрақтың мағынасы жоқ. қатысты PHP функциялары empty(), содан кейін оны пайдаланудың орындылығы сұрақ болып қала береді.

Объектілі-бағытталған программалау логикасы бойынша объектінің өзіндік мазмұны және өзіндік әдістері бар. Тек объектінің өзі оның бос немесе бос емес екенін айта алады, бірақ ол тіл синтаксисінің бөлігі болса да, үшінші тарап функциясы емес.

Нысан және оның функциясы бос()

Осы қарапайым, бірақ заңды негізде әрбір нысанды оның «бостықты» түсіну контекстінде қарастыру керек. Мысалы, «Қызметкерлер кестесі» объектісін жүзеге асыру «Қызметкер» жазбаларынан тұрады. Бірақ егер бірде-бір қызметкер болмаса, онда «Кадрлар тізімінде» әрқашан әлеуетті қызметкерлердің лауазымдарының нұсқалары бар.

Мұнда PHP бос нысан функциясын қандай деңгейде пайдалануым керек? «Кадрлық қамтамасыз ету» деңгейінде бір қызметкер болмаса да, бәрі бар. «Қызметкер» деңгейінде объект толығымен толтырылмаған болса да, бұрыннан бар. Толық толтырылмаған нысанды бос нысанға жатқызуға болады. Одан штаттық кестеге ешқандай пайда жоқ.

Бағдарламалау стиліңізге байланысты PHP empty() және isset() функциялары қауіпсіз және сенімді алгоритм құру үшін өте маңызды, бірақ нысандар үшін оның мазмұны бойынша анықталған empty() нұсқасы болғаны дұрыс.

PHP-де FALSE және NULL мәндері және олармен байланысты мәндер әдетте басқа тілдердегіден ерекшеленеді және өздерінің айқын емес ерекшеліктеріне ие.
FALSE және NULL және олардың байланысты мәндері әдетте басқа тілдерде қолданылатынынан ерекшеленеді және өздерінің айқын емес ерекшеліктеріне ие.
Мақалада осы ерекшеліктер талқыланады.

Жаңадан бастағандар үшін бұл толық суретті көру үшін, тәжірибелі оқырмандар үшін - егер қандай да бір нюанс ойларын өзгертсе, жадтарын жаңарту үшін пайдалы болуы мүмкін.

If операторларында FALSE
  • PHP құжаттамасына сәйкес логикалық мәнге көшіруден кейін келесі мәндер ЖАЛҒАН болады:
  • логикалық мәннің өзі ЖАЛҒАН
  • бос жол («») және «0» жолы.
  • бос массив (массив) – массив().
  • нөлдік мүше айнымалылары бар нысан (тек PHP 4, осы мақалада қарастырылмаған)
  • SimpleXML нысандары (осы мақалада қарастырылмаған)
Бұл дегеніміз, егер мұндай мәндер шартқа берілсе:
егер (…) жаңғырық «1»; басқа жаңғырық «0»;
содан кейін «0» жолы басып шығарылады.

Егер айнымалының мәні орнатылмаса (орнатылмаған), онда ескерту де берілуі мүмкін. Естеріңізге сала кетейік, шарттағы ескертуді айнымалының алдына @ жазу арқылы жоюға болады.

Мысалы:

Егер (@$undefVar) (…)
Бірақ @ мәнін мұқият ойластырған және басқа қолайлы нұсқалар болмаған төтенше жағдайларда ғана пайдалану керек. isset() функциясын қараңыз.

is_null() функциясы және тіл isset() және empty() конструкцияларын жасайды.

is_null() ешбір мән тағайындалмаған немесе NULL мәні тағайындалған айнымалылар үшін ғана TRUE мәнін қайтарады.
isset() is_null() мәнімен салыстырғанда бір-бір логикалық мәндерді қайтарады.
Егер айнымалыға мән тағайындалмаса, онда is_null() ешбір ескерту жасамайтын isset() функциясына қарағанда "Анықталмаған айнымалы" ескертуін береді.
Еске салайық, айнымалының мәнін жою үшін unset() функциясын пайдалануға болады. Сондай-ақ, айнымалы мәнді оқу әрекеті кезінде компилятордың ескертулерін болдырмау үшін осы мақсат үшін NULL мәнін тағайындауға болады.

Айнымалылардан айырмашылығы, тұрақтылармен жұмыс істеу үшін анықталған() құрылымын пайдалану керек екенін ескеріңіз.

Жолды көрсету

Жалған тұрақтылардың жолдық көрінісін қарастырайық.
Мысалы, біріктіру мәндерді төмендегі кестеде көрсетілген келесі жолдарға түрлендіреді:

Жолдарға түрлендіру тақырыбы ресми веб-сайтта Жолға түрлендіру параграфында толығырақ сипатталған.

Салыстыру операторлары

Салыстыру операторларына көшейік.
Барлық жалған мәндер " == " операторы арқылы FALSE-мен салыстырғанда күткендей ақиқат болып шығады.
Бірақ жалған жол тұрақтыларын бір-бірімен салыстыру кезінде транзитивтілікке сенбеу керек.
Мұнда жалған мәндерді салыстыруға арналған толық кесте берілген (плюс кесте элементтерін білдіреді, олар « != " операторы арқылы салыстырылған кезде шынайы мәнді қайтарады:

$undef – мән тағайындалмаған айнымалы

Кестеден кейбір жағымды қорытындылар жасауға болады:
1. Егер біз тек жолдарды қолданатынымызды білсек, онда біз оларды қауіпсіз салыстыра аламыз және «» (бос жол) «0»-ге тең болады деп алаңдамаймыз.
2. Массивтер ешқашан жолдарға, бүтін сандарға немесе нақты сандарға тең болмайды.

Әртүрлі жалған константалардың түрлері әртүрлі болғандықтан, оларды ажырату үшін === және !== жұбын пайдалануға болады.
=== операторы жалған мәндердің барлық жұптары үшін false мәнін қайтарады.
Аргументтер үшін ғана шын мәнді қайтарады, олардың біреуіне NULL мәні тағайындалған, ал екіншісіне ешқандай мән тағайындалмаған.

NULL мәні бар айнымалылар мен анықталмаған айнымалылар арасындағы айырмашылық

=== операторы NULL мәні бар айнымалыларды мән тағайындалмаған айнымалылардан басқа барлық жалған мәндерді ажыратуға мүмкіндік береді.

Мұндай айнымалы мәндерді get_defined_vars() функциясы арқылы ажыратуға болады.

$var айнымалысына мән тағайындалғанын анықтау қажет болса, мұны істеу үшін келесі код үзіндісін пайдалануға болады:
if (array_key_exists("var", get_defined_vars())) ( echo "var анықталған"; // $var NULL тағайындалған) басқа ( echo "var анықталмаған"; // $var анықталмаған немесе орнатылмаған($ var) шақырылды)

Қорытындылар

Сіз PHP-де екі жалған мән бір-біріне тең болмауы мүмкін екенін және бір қарағанда әр түрлі болып көрінетін айнымалылар салыстырған кезде бірдей болуы мүмкін екенін әрқашан есте ұстауыңыз керек. Мұндай тосын жағдайларды болдырмау үшін === және !== операторларын пайдалануға болады.

Массивтермен жұмыс істегенде, тосын жағдайларды болдырмау үшін мәндерді кепілдік берілген әртүрлі индекстерге түрлендіру функциясын жазуға болады. Осыдан кейін массивтің элементтеріне тек оның көмегімен қол жеткізуге болады. Бұл бағдарламаны баяулатуы мүмкін, бірақ тосын жағдайларды болдырмауға көмектеседі.

Тестілеу PHP 5.3.1 бойынша жүргізілді.

Қосымша сілтемелер

1. РНР типті салыстыру кестелері.
2. PHP контекстіндегі MySQl нөлдік және бос жолдар.

Тегтер: тегтерді қосу