Jinsi ya kuangalia ikiwa kutofautisha ni tupu au sio kwenye php. Laha ya kudanganya ya PHP: FALSE, NULL na maadili yanayohusiana nao. is_null() kazi na lugha huunda isset() na empty()

Katika PHP, maadili FALSE na NULL na maadili yanayohusiana ni tofauti na jinsi kawaida katika lugha zingine na kuwa na sifa zao zisizo dhahiri.
Makala inazungumzia vipengele hivi.
Kwa wanaoanza, hii inaweza kuwa muhimu kwa kuona picha kamili; kwa wasomaji wenye uzoefu, inaweza kuwa muhimu kusasisha kumbukumbu zao ikiwa nuance fulani imeteleza akilini mwao.

FALSE katika Kama taarifa

Kulingana na hati za PHP, maadili yafuatayo ni FALSE baada ya kutupwa kwa boolean:
  • thamani ya boolean yenyewe ni FALSE
  • kamba tupu ("") na kamba "0".
  • safu tupu (safu) - safu ().
  • kitu kilicho na vijiti vya sifuri vya wanachama (PHP 4 pekee, haijashughulikiwa katika nakala hii)
  • thamani maalum ya NULL (pamoja na vigeu visivyowekwa)
  • Vitu vya SimpleXML (havijafunikwa katika nakala hii)
Hii inamaanisha kuwa ikiwa maadili kama haya yatapitishwa kwa hali:
ikiwa (…) mwangwi “1”; mwingine echo "0";
kisha kamba "0" itachapishwa.

Ikiwa thamani ya kutofautiana haijawekwa (haijawekwa), basi onyo linaweza pia kutolewa. Hebu tukumbushe kwamba onyo katika hali inaweza kuondolewa kwa kuandika @ kabla ya kutofautiana.

Kwa mfano:

Ikiwa (@$undefVar) ( …)
Lakini unapaswa kutumia @ tu katika hali mbaya, wakati umefikiria kwa uangalifu na hakuna chaguzi zingine zinazofaa. Angalia isset() kazi.

is_null() kazi na lugha huunda isset() na empty()

is_null() hurejesha TRUE kwa vigeu pekee ambavyo havijagawiwa thamani yoyote au ambavyo vimepewa thamani NULL .
isset() inarudisha maadili ya boolean ya moja-kwa-moja ikilinganishwa na is_null() .
Ikiwa utofauti haujapewa thamani, basi is_null() pia hutoa onyo la "Undefined variable", tofauti na isset(), ambayo haitoi onyo lolote.
Kumbuka kwamba ili kuondoa thamani ya kutofautisha, unaweza kutumia unset() kazi. Unaweza pia kugawa thamani ya NULL kwa kusudi hili ili kuzuia maonyo ya mkusanyaji wakati wa kujaribu kusoma thamani ya kutofautisha.

Tafadhali kumbuka kuwa, tofauti na anuwai, kufanya kazi na viboreshaji lazima utumie defined() construct.

Uwakilishi wa kamba

Wacha tuangalie uwakilishi wa kamba wa viunga vya uwongo.
Kwa mfano, muunganisho hubadilisha maadili kuwa mifuatano ifuatayo, iliyoonyeshwa kwenye jedwali hapa chini:

Mada ya kubadilisha kwa kamba imeelezewa kwa undani zaidi kwenye tovuti rasmi katika aya ya Kubadilisha kwa kamba.

Waendeshaji wa Kulinganisha

Wacha tuendelee kwa waendeshaji wa kulinganisha.
Thamani zote zisizo za kweli hurejesha kweli, kama inavyotarajiwa, ikilinganishwa na FALSE kwa kutumia opereta " == ".
Lakini haupaswi kutegemea upitishaji hapa wakati wa kulinganisha viunga vya uwongo vya uwongo na kila mmoja.
Hapa kuna jedwali kamili la kulinganisha maadili ya uwongo (pamoja na inaashiria vipengee vya jedwali ambavyo, ukilinganisha na opereta " != ", hurejesha thamani halisi:

$undef - kigezo ambacho hakijapewa thamani

Baadhi ya hitimisho la kupendeza linaweza kutolewa kutoka kwa meza:
1. Ikiwa tunajua kwamba tunatumia tu kamba, basi tunaweza kulinganisha kwa usalama na usijali kwamba "" (kamba tupu) itakuwa sawa na "0".
2. Mikusanyiko kamwe hailingani na mifuatano, nambari kamili au nambari halisi.

Kwa kuwa aina za viwango tofauti vya uwongo ni tofauti, jozi ya waendeshaji === na !== inaweza kutumika kutofautisha.
Opereta === inarudisha uwongo kwa jozi zote za maadili ya uwongo.
Hurejesha thamani halisi kwa hoja pekee ambayo moja imepewa thamani NULL, na ya pili haijakabidhiwa thamani yoyote.

Tofauti kati ya vigeu vilivyo na thamani NULL na vigeu visivyofafanuliwa

Opereta === hukuruhusu kutofautisha kati ya maadili yote ya uwongo, isipokuwa vijiti vilivyo na thamani NULL kutoka kwa vigeu ambavyo havijapewa thamani.

Vigezo kama hivyo vinaweza kutofautishwa kwa kutumia get_defined_vars() kazi.

Ikiwa unahitaji kubainisha kama thamani imepewa $var variable, kijisehemu kifuatacho kinaweza kutumika kufanya hivi:
ikiwa (array_key_exists("var", get_defined_vars())) ( echo "var imefafanuliwa"; // $var imepewa NULL ) vinginevyo ( echo "var HAIELEWI"; // $var haijafafanuliwa au haijawekwa($ var) aliitwa)

hitimisho

Unapaswa kukumbuka kila wakati kuwa katika PHP, maadili mawili ya uwongo hayawezi kuwa sawa kwa kila mmoja, na vijiti vinavyoonekana kuwa tofauti mwanzoni vinaweza kuwa sawa wakati vinalinganishwa. Ili kuepuka mshangao kama huo, unaweza kutumia waendeshaji === na !==.

Wakati wa kufanya kazi na safu, ili kuzuia mshangao, unaweza kuandika kazi ya kubadilisha maadili kuwa faharisi tofauti zilizohakikishwa. Baada ya hayo, vipengele vya safu vinaweza kupatikana tu kwa kutumia. Hii inaweza kupunguza kasi ya programu, lakini itasaidia kuepuka mshangao.

Jaribio lilifanywa kwenye PHP 5.3.1.

Viungo vya ziada

1. Jedwali la kulinganisha la aina ya PHP.
2. MySQl Null na Kamba Tupu katika muktadha wa PHP.

Lebo: Ongeza vitambulisho

kamba tofauti (12)

Nina chaguo za kukokotoa isNotEmpty ambayo inarejesha kweli ikiwa kamba si tupu na si kweli ikiwa mfuatano hauna kitu. Niligundua kuwa haifanyi kazi ikiwa nitapitisha laini tupu kupitia hiyo.

Kazi isNotEmpty($input) ( $strTemp = $input; $strTemp = trim($strTemp); if(strTemp != "") //Pia jaribu hii "if(strlen($strTemp) > 0)" ( rudi kweli ;) kurudi uwongo;)

Mfuatano unaangaliwa kwa kutumia isNotEmpty:

Ikiwa(isNotEmpty($userinput["phoneNumber"))) ( //thibitisha nambari ya simu) vinginevyo ( echo "Nambari ya simu haijaingizwa
"; }

Ikiwa mstari hauna kitu, vinginevyo haujatekelezwa, sielewi ni kwanini, mtu anaweza kuangazia hili tafadhali.

Majibu

ikiwa unayo uwanja ambao ni serial_number na unataka kuangalia nafasi tupu

$serial_number = trim($_POST); $q="chagua * kutoka kwa bidhaa ambapo mtumiaji_id="$_SESSION""; $rs=mysql_query($q); while($row=mysql_fetch_assoc($rs))( if(empty($_POST["irons"]))( $irons=$row["product1"]; )

kwa njia hii unaweza kurudia kupitia vitanzi vyote kwenye kitanzi na utendakazi mwingine tupu

Naam, badala ya kujibu (naamini tayari umesharekebisha tatizo lako), nitakupa ushauri.

Sijui kuhusu kila mtu mwingine, lakini mimi binafsi hukasirika sana ninapoona kitu kama:

Kama(<>) (rudi kweli; ) rudisha uwongo;

hii inahitaji urejesho wa kifahari (<>>); " Tafadhali angalia msimbo wako kila wakati na uondoe mantiki hii. Kwa kila mmoja hali hauitaji taarifa ya IF.

Ninaandika tu is_string kazi yangu kuangalia aina na strlen kuangalia urefu.

Kazi emptyStr($str) ( return is_string($str) && strlen($str) === 0; ) chapisha emptyStr("") ? "empty" : "si tupu"; // tupu

BONYEZA: Unaweza pia kutumia kitendakazi cha trim kuangalia ikiwa kamba haina.

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

PHP ina kazi iliyojengewa ndani inayoitwa empty() Jaribio linafanywa kwa kuandika if(empty($string))(...) php.net link: php empty

Una jibu, lakini kwa upande wako unaweza kutumia

Rudisha tupu($input);

Kurudi ni_string($input);

Tatizo rahisi. Badilisha:

Ikiwa(strTemp != "")

Ikiwa($strTemp != "")

Labda pia unaweza kuibadilisha kuwa:

Ikiwa($strTemp !== "")

kwani != "" itarudi kuwa kweli ikiwa utapitisha nambari ya nambari 0 na visa vingine vichache kwa sababu ya ubadilishaji wa aina otomatiki wa PHP.

Pia kumbuka kuwa PHP tayari ina tupu() kazi.

PHP hutathmini kamba tupu kuwa ya uwongo, kwa hivyo unaweza kutumia tu:

Ikiwa (trim($userinput["phoneNumber"])) ( // thibitisha nambari ya simu) vinginevyo ( echo "Nambari ya simu haijaingizwa
"; }

Mimi hutumia regex kila wakati kuangalia kamba tupu, iliyoanzia enzi za CGI/Perl na Javascript, kwa nini sio PHP kwa mfano (ingawa haijajaribiwa)

Rudisha preg_match("/\S/", pembejeo $);

Ambapo \S inawakilisha tabia yoyote bila nafasi

Tumia tu strlen() kazi

Ikiwa (strlen($s)) ( // sio tupu)

Hivi majuzi nilijiuliza swali lile lile.
Kuna suluhisho kadhaa zinazowezekana, hapa kuna 3 halali:

  • s.indexOf(starter) === 0
  • s.substr(0,starter.length) === kianzishi
  • s.lastIndexOf(starter, 0) === 0 (imeongezwa baada ya kutazama jibu la Mark Bayer)
  • kwa kutumia kitanzi:

    Kazi huanzaNa(s,starter) ( kwa (var i = 0,cur_c; i< starter.length; i++) { cur_c = starter[i]; if (s[i] !== starter[i]) { return false; } } return true; }

Sijapata suluhisho la mwisho ambalo linajumuisha kutumia kitanzi.
Kwa kushangaza, suluhisho hili ni bora zaidi kuliko 3 za kwanza.
Hapa kuna jaribio la jsperf nilikimbia kufikia hitimisho hili: http://jsperf.com/startswith2/2

ps: ecmascript 6 (maelewano) inatanguliza startsWith mbinu yake ya mifuatano.
Fikiria ni muda gani ungeokolewa kama wangefikiria kujumuisha njia hii inayohitajika sana katika toleo la kwanza.

Sasisha

Kumbuka kuwa kuna uboreshaji wa kitanzi 2 ambacho Steve alijumuisha, ya kwanza kati ya hizo mbili ilionyesha utendaji bora, kwa hivyo nitachapisha nambari hiyo hapa chini:

Kazi huanzaNa2(str, kiambishi awali) ( ikiwa (str.length< prefix.length) return false; for (var i = prefix.length - 1; (i >= 0) && (str[i] === kiambishi awali[i]); --i) kuendelea; kurudi i< 0; }

Katika PHP, maadili FALSE na NULL na maadili yanayohusiana ni tofauti na jinsi kawaida katika lugha zingine na kuwa na sifa zao zisizo dhahiri.
Makala inazungumzia vipengele hivi.
Kwa wanaoanza, hii inaweza kuwa muhimu kwa kuona picha kamili; kwa wasomaji wenye uzoefu, inaweza kuwa muhimu kusasisha kumbukumbu zao ikiwa nuance fulani imeteleza akilini mwao.

FALSE katika Kama taarifa

Kulingana na hati za PHP, maadili yafuatayo ni FALSE baada ya kutupwa kwa boolean:
  • thamani ya boolean yenyewe ni FALSE
  • kamba tupu ("") na kamba "0".
  • safu tupu (safu) - safu ().
  • kitu kilicho na vijiti vya sifuri vya wanachama (PHP 4 pekee, haijashughulikiwa katika nakala hii)
  • thamani maalum ya NULL (pamoja na vigeu visivyowekwa)
  • Vitu vya SimpleXML (havijafunikwa katika nakala hii)
Hii inamaanisha kuwa ikiwa maadili kama haya yatapitishwa kwa hali:
ikiwa (…) mwangwi “1”; mwingine echo "0";
kisha kamba "0" itachapishwa.

Ikiwa thamani ya kutofautiana haijawekwa (haijawekwa), basi onyo linaweza pia kutolewa. Hebu tukumbushe kwamba onyo katika hali inaweza kuondolewa kwa kuandika @ kabla ya kutofautiana.

Kwa mfano:

Ikiwa (@$undefVar) ( …)
Lakini unapaswa kutumia @ tu katika hali mbaya, wakati umefikiria kwa uangalifu na hakuna chaguzi zingine zinazofaa. Angalia isset() kazi.

is_null() kazi na lugha huunda isset() na empty()

is_null() hurejesha TRUE kwa vigeu pekee ambavyo havijagawiwa thamani yoyote au ambavyo vimepewa thamani NULL .
isset() inarudisha maadili ya boolean ya moja-kwa-moja ikilinganishwa na is_null() .
Ikiwa utofauti haujapewa thamani, basi is_null() pia hutoa onyo la "Undefined variable", tofauti na isset(), ambayo haitoi onyo lolote.
Kumbuka kwamba ili kuondoa thamani ya kutofautisha, unaweza kutumia unset() kazi. Unaweza pia kugawa thamani ya NULL kwa kusudi hili ili kuzuia maonyo ya mkusanyaji wakati wa kujaribu kusoma thamani ya kutofautisha.

Tafadhali kumbuka kuwa, tofauti na anuwai, kufanya kazi na viboreshaji lazima utumie defined() construct.

Uwakilishi wa kamba

Wacha tuangalie uwakilishi wa kamba wa viunga vya uwongo.
Kwa mfano, muunganisho hubadilisha maadili kuwa mifuatano ifuatayo, iliyoonyeshwa kwenye jedwali hapa chini:

Mada ya kubadilisha kwa kamba imeelezewa kwa undani zaidi kwenye tovuti rasmi katika aya ya Kubadilisha kwa kamba.

Waendeshaji wa Kulinganisha

Wacha tuendelee kwa waendeshaji wa kulinganisha.
Thamani zote zisizo za kweli hurejesha kweli, kama inavyotarajiwa, ikilinganishwa na FALSE kwa kutumia opereta " == ".
Lakini haupaswi kutegemea upitishaji hapa wakati wa kulinganisha viunga vya uwongo vya uwongo na kila mmoja.
Hapa kuna jedwali kamili la kulinganisha maadili ya uwongo (pamoja na inaashiria vipengee vya jedwali ambavyo, ukilinganisha na opereta " != ", hurejesha thamani halisi:

$undef - kigezo ambacho hakijapewa thamani

Baadhi ya hitimisho la kupendeza linaweza kutolewa kutoka kwa meza:
1. Ikiwa tunajua kwamba tunatumia tu kamba, basi tunaweza kulinganisha kwa usalama na usijali kwamba "" (kamba tupu) itakuwa sawa na "0".
2. Mikusanyiko kamwe hailingani na mifuatano, nambari kamili au nambari halisi.

Kwa kuwa aina za viwango tofauti vya uwongo ni tofauti, jozi ya waendeshaji === na !== inaweza kutumika kutofautisha.
Opereta === inarudisha uwongo kwa jozi zote za maadili ya uwongo.
Hurejesha thamani halisi kwa hoja pekee ambayo moja imepewa thamani NULL, na ya pili haijakabidhiwa thamani yoyote.

Tofauti kati ya vigeu vilivyo na thamani NULL na vigeu visivyofafanuliwa

Opereta === hukuruhusu kutofautisha kati ya maadili yote ya uwongo, isipokuwa vijiti vilivyo na thamani NULL kutoka kwa vigeu ambavyo havijapewa thamani.

Vigezo kama hivyo vinaweza kutofautishwa kwa kutumia get_defined_vars() kazi.

Ikiwa unahitaji kubainisha kama thamani imepewa $var variable, kijisehemu kifuatacho kinaweza kutumika kufanya hivi:
ikiwa (array_key_exists("var", get_defined_vars())) ( echo "var imefafanuliwa"; // $var imepewa NULL ) vinginevyo ( echo "var HAIELEWI"; // $var haijafafanuliwa au haijawekwa($ var) aliitwa)

hitimisho

Unapaswa kukumbuka kila wakati kuwa katika PHP, maadili mawili ya uwongo hayawezi kuwa sawa kwa kila mmoja, na vijiti vinavyoonekana kuwa tofauti mwanzoni vinaweza kuwa sawa wakati vinalinganishwa. Ili kuepuka mshangao kama huo, unaweza kutumia waendeshaji === na !==.

Wakati wa kufanya kazi na safu, ili kuzuia mshangao, unaweza kuandika kazi ya kubadilisha maadili kuwa faharisi tofauti zilizohakikishwa. Baada ya hayo, vipengele vya safu vinaweza kupatikana tu kwa kutumia. Hii inaweza kupunguza kasi ya programu, lakini itasaidia kuepuka mshangao.

Ikiwa, wakati wa kufanya kazi na kamba, unahitaji kuangalia ikiwa kamba haina tupu, waandaaji wa programu wanaoanza kawaida hutumia kazi hiyo. strlen(). Chaguo hili la kukokotoa ni la haraka sana kwa sababu halifanyi mahesabu yoyote, lakini hurejesha tu thamani inayojulikana ya urefu wa kamba, inayopatikana katika zval (PHP hutumia muundo wa C kuhifadhi vigeu). Lakini bado, kwa sababu strlen()- hii ni chaguo la kukokotoa, ni polepole kwa sababu inahitaji vitendo kadhaa inapoitwa, kama vile kubadilisha hadi herufi ndogo na kutafuta jedwali la hashi. Katika baadhi ya matukio, unaweza kuongeza kasi ya utekelezaji wa nambari yako kwa kutumia tupu ()..., lakini pia tupu () Bado unaweza kuiboresha kidogo.

Hebu tuchukue mfano Kwa mfano kuangalia njia ya picha, kazi huangalia ikiwa njia ni tupu, kisha uibadilisha na njia nyingine, kwa mfano "images/noimage.jpg".

Na kwa hivyo kazi nzima inakaribia kuangalia ikiwa safu ya aina ni tupu. Wacha tujaribu njia 4:

  • if(strlen($img_path)>0)
  • ikiwa($img_path(0))
  • ikiwa(tupu($img_path))
  • na njia moja zaidi ya mwisho.

Na kwa hivyo tutaandika kwa njia ya kwanza:

Kazi check_image_path($img_path ) ( if (strlen ($img_path ) >0 ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ;)

Wacha tufanye majaribio, wakati wa wastani wa mtihani ulichukua 1.43795800209 sekunde.

Kufikiria juu yake kidogo zaidi ... Unaweza kufikia herufi ya kwanza ya mstari mara moja, badala ya mstari mzima. Ikiwa herufi ya kwanza iko, basi kamba haina tupu. Tabia ya kwanza kwenye mstari imehesabiwa na "0".

Kazi check_image_path($img_path) ( ikiwa ($img_path ( 0 ) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ;)

wastani wa muda wa mtihani 1.19431300163 sekunde, 17% ya muda uliochezwa

Wacha tujaribu kuandika kwa kutumia empty() sasa:

Kazi check_image_path($img_path) ( ikiwa (tupu ($img_path) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ;)

wastani wa muda wa mtihani 1.1341319084 sekunde, 5% ya muda uliochezwa kutoka kwa mfano uliopita

Sasa hebu tuangalie mfano wa mwisho na wa mwisho juu yetu. Wacha tuone jinsi hii inaweza kuunganishwa. fikiria... ni jinsi gani nyingine unaweza kuboresha?

Kazi check_image_path($img_path) ( ikiwa ( tupu ( $img_path ( 0 ) ) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ;)

wastani wa muda wa mtihani 1.07465314865 sekunde, na tena tulishinda 5% ya wakati ...

Inafanyaje kazi na kwa nini ni haraka? Na hapa $img_path(0) inarudisha herufi ya kwanza... na kisha kitendakazi tupu () huangalia kamba tupu ... tofauti kutoka kwa mfano uliopita ni kwamba herufi moja tu hupitishwa kwa kazi, na sio kamba nzima. Kwa hivyo, kutoka kwa mfano wa kwanza hadi wa mwisho tulishinda 25% wakati.

Upangaji wa kisasa umekuwa ukidhibiti kwa ufanisi vigeu visivyochapishwa kwa muda mrefu. Aina ya kutofautisha haiwezi kubainishwa mapema na inaweza kubadilishwa wakati wa utekelezaji wa programu.

Dhana hii imekuwa muhimu kwa dhana ya jumla ya programu. Mwanzoni mwa enzi ya upangaji, lugha zilizo na imani sawa kabisa zilihitaji mpangaji kufafanua vijiti na kuhakikisha kuwa hakuna kitu haramu kilichopewa. Wala programu wala lugha za programu zilikuwa na wazo lolote kabla ya kuwa tofauti hubadilisha aina yake.

Kuhusu tupu na haipo

Kitendaji cha PHP empty() ni kinyume cha kitendakazi cha isset() na kina vipengele maalum vya utumiaji. Ikiwa hakuna kutofautiana, basi kazi ya kwanza inajibu vyema na matokeo yake ni ya kweli, na ya pili inajibu vibaya, yaani, thamani yake itakuwa ya uongo.

Kwa ufafanuzi, isset() imeundwa kuangalia uwepo wa kutofautisha. Haijalishi nini na jinsi kutofautiana kulivyopewa, jambo kuu ni kwamba lipo na haliharibiki na unset () kazi. Matokeo ya kazi ya isset() itakuwa chanya - kweli. Ni muhimu kukumbuka kwamba ikiwa $ iVar = 0; basi isset($iVar) itakuwa kweli, lakini empty($iVar) pia itakuwa kweli.

Katika kesi ya kwanza, matokeo yanamaanisha kuwa kutofautisha kunapatikana, katika kesi ya pili, kutofautisha ni tupu, ambayo ni, thamani "0" kwa namna yoyote, iwe ni kamba ("0") au nambari (fractional - 0.0 au nambari kamili - 0) ni sawa: empty($iVar) itakuwa kweli.

Kuhusu usalama na udhibiti

Mazoezi yanaonyesha kuwa lugha ambazo hazijachapishwa hupeana uhuru zaidi kwa mpangaji, lakini fikiria kuwa mtazamo wake wa kufanya kazi kwenye algorithm unawajibika zaidi.

PHP inatoa syntax ya kisasa ambayo inasaidia semantiki imara, ina makosa machache, lakini inahitaji uangalifu wa makini. Kwa mfano, kupiga kazi yoyote inahitaji idadi fulani ya vigezo.

Wakati wa kupiga kazi, sio lazima kupitisha vigezo vyote; unaweza kupitisha sehemu muhimu tu yao. Kazi "lazima" kuangalia uwepo na kuwepo kwa vigezo vyote. Zile ambazo hazipo au zilizo na maadili yasiyo sahihi lazima zirejeshwe kwa fomu ya kawaida na zipewe maadili yanayohitajika.

Katika muktadha huu, kazi ya PHP empty() ni muhimu. Usemi:

$a = "1;2" + 20

itagawa thamani 21 kwa kutofautisha $a, kwani sehemu ya kwanza ya usemi itawakilishwa kama 1, na ya pili itakuwa 20.

Matokeo yatakuwa ya nambari ya aina na kazi ya PHP tupu($a) itakuwa na matokeo - ya uwongo, ambayo ni, kutofautisha $a sio tupu.

Katika muktadha huu, kuwa na kazi:

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

Wakati wa kupiga simu:

$res = funcTest($aVal, $bVal)

itakuwa na kile kinachohitajika, yaani, matokeo ya kazi. Na inapoitwa:

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

Kiini cha chaguo za kukokotoa kina kigezo kimoja pekee chenye thamani "$aVal . $bVal" na kuna uwezekano mkubwa kigezo hiki kitafasiriwa kama mfuatano wa vibambo.

PHP empty() kwa vitu na safu

Syntax ya lugha ina idadi ya kutosha ya ujenzi na kazi za kufanya kazi na vitu na safu, lakini kutoka kwa mtazamo wa kuangalia kwa kuwepo kwao na kwa uwepo wa thamani, hakuna tofauti maalum kutoka kwa vigezo.

PHP tupu (safu) - sawa na kupiga simu tupu (kutofautisha rahisi). Walakini, kuna maoni muhimu sana kuhusu vitu. Kuhusu kuangalia kitu kwa uwepo (isset), swali halina maana. Kuhusu PHP empty() kazi, ushauri wa matumizi yake unabaki kuwa wa shaka.

Kulingana na mantiki ya programu inayolenga kitu, kitu kina maudhui yake na seti yake ya mbinu. Kipengele chenyewe pekee ndicho kinachoweza kujua ikiwa ni tupu au si tupu, lakini si chaguo za kukokotoa za wahusika wengine, hata ikiwa ni sehemu ya sintaksia ya lugha.

Kitu na kazi yake empty()

Kwa msingi huu rahisi, lakini halali, kila kitu kinapaswa kuzingatiwa katika muktadha wa ufahamu wake wa "utupu". Kwa mfano, utekelezaji wa kitu cha "Jedwali la Wafanyakazi" lina rekodi za "Mfanyakazi". Lakini ikiwa hakuna mfanyakazi mmoja, basi katika "Orodha ya Wafanyikazi" kuna chaguzi kila wakati kwa nafasi za wafanyikazi wanaowezekana.

Je, ni kwa kiwango gani ninapaswa kutumia kazi ya kitu tupu cha PHP hapa? Katika kiwango cha "Wafanyikazi", kila kitu kipo, hata ikiwa hakuna mfanyakazi mmoja. Katika kiwango cha "Mfanyakazi", kitu tayari kipo, hata ikiwa haijajazwa kabisa. Kitu ambacho hakijajazwa kabisa kinaweza kuainishwa kama kitu tupu. Hakuna faida kutoka kwa meza ya wafanyikazi.

Kulingana na mtindo wako wa upangaji, kazi za PHP empty() na isset() ni muhimu sana kwa kujenga algoriti iliyo salama na inayotegemewa, lakini kwa vitu bado ni bora kuwa na lahaja ya empty() iliyofafanuliwa na yaliyomo.