Премини към съдържанието
frozener

Терминираща нула и празен низ в PHP

Препоръчан отговор


Здравейте,

 

Ще изучавам PHP в университета от втори семестър. Реших да го разуча и по-точно с "no values" на променливите. Пробвах в простичък php скрипт, с цел да сравня "", '\0' и null. Сравнявам ги по двата начина чрез == и === за тип. Резултатът е, че ""(празен низ) и терминиращанула не е едно и също. За null е ясно, понеже при него променливата не е зададена стойност. Може ли някой да ми обясни защо празен низ и терминираща нула не са равни? Преди време, когато се занимавах със С, прочетох, че "" и '\0' имат един и същ representation. Би трябвало и в php да е така.

<?php

	$var = ''; // Example with '\0' "" and null

	if(isset($var))
	{
		echo $var . " is set" . " <br />";

	}
	else echo $var . " is not set" . " <br />";

	if($var === '\0'){

		echo $var . " is equal to". '\0';

	}else{
			 echo $var . " is not equal to". '\0';

			}


?>
Редактирано от frozener (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

PHP пази вътрешно стойността на реалната дължина на стринга.

Единият ти стринг е празен с дължина 0 а вторият съдържа символ с код 0 и е с дължина 1.


Можеш да се убедиш сам:

<?php

    $var1 = ""; 
    $var2 = "\0";

    echo strlen($var1)."<br />";
    echo strlen($var2);    

?>
  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.