現在の言語: 日本語

戻る

string型
php型宣言

phpで使用する型宣言のstring型について
string型は文字の並びを表します。
囲み文字によって表現するデータ型です。
"(ダブルコーテーション)
'(シングルコーテーション)

[サンプル]

copy
class test1
{
	function testLineCode()
	{
		echo "(1) first row.\nsecond row.".PHP_EOL;
		/*
		(1) first row.
		second row.
		*/
		echo "(2) this is \'apple\'.".PHP_EOL;//(2) this is \'apple\'.
	}
	function escapeString()
	{
		$data = "<script>console.log(\"hello world\");</script>";
		echo htmlspecialchars($data, ENT_QUOTES, "UTF-8").PHP_EOL;//<script>console.log("hello world");</script>
	}
	function urlEncode()
	{
		echo urlencode("https://nekofes.github.io").PHP_EOL;//https%3A%2F%2Fnekofes.github.io
	}
}
echo "<pre>";

$cls1 = new test1();
$cls1->testLineCode();
$cls1->escapeString();
$cls1->urlEncode();

echo "</pre>";
copy
class test1
{ 
	function testLineCode() 
	{ 
		echo "(1) first row.\nsecond row.".PHP_EOL; 
		/* 
		(1) first row. 
		second row. 
		*/ 
		echo "(2) this is \'apple\'.".PHP_EOL;//(2) this is \'apple\'. 
	} 
	function escapeString() 
	{ 
		$data = "<script>console.log(\"hello world\");</script>"; 
		echo htmlspecialchars($data, ENT_QUOTES, "UTF-8").PHP_EOL;//<script>console.log("hello world");</script> 
	} 
	function urlEncode() 
	{ 
		echo urlencode("https://nekofes.github.io").PHP_EOL;//https%3A%2F%2Fnekofes.github.io 
	}
}
echo "<pre>";

$cls1 = new test1();
$cls1->testLineCode();
$cls1->escapeString();
$cls1->urlEncode();

echo "</pre>";

[エスケープシーケンス一覧]
シーケンス説明結果使用例
\"ダブルクォーテーション`"echo "彼女は\"Hello\"と言った";
\\バックスラッシュ自体\echo "C:\\Users\\";
\n改行(LF: Line Feed)改行echo "1\n2";
\rキャリッジリターン(CR: Carriage Return)行頭に戻る(環境依存の挙動、通常は\nを使用)
\t水平タブタブ文字echo "fruit:\tapple";
\$ドル記号$echo "price is \$10.";
\[0-7]{1,3}8進数表現ASCII/バイナリ値echo "\101"; は "A" を出力
\x[0-9A-Fa-f]{1,2}16進数表現ASCII/バイナリ値echo "\x41"; は "A" を出力
\u{xxxxxx}UnicodeコードポイントUnicode文字echo "\u{3042}"; は "あ" を出力 (PHP 7以降)

echo "(1) first row.\nsecond row.".PHP_EOL;
[出力結果]
(1) first row.
second row.
「\n」は改行コードとなります。

echo "(2) this is \'apple\'.".PHP_EOL;
「\'」は「\」(エスケープ)させることでシングルコーテーションを表示させています。
echo htmlspecialchars($data, ENT_QUOTES, "UTF-8").PHP_EOL;
htmlspecialchars関数を使用することでエスケープシーケンスします。
[結果]
<script>console.log("hello world");</script>

echo urlencode("https://nekofes.github.io").PHP_EOL;
urlencode関数はURLにそのまま含められない文字(スペースや日本語など)をエンコードします。
[結果]
https%3A%2F%2Fnekofes.github.io


copy
class test2
{
function castInt()
{
	$str1 = "1.23";
	$str2 = "0.5";
	$str3 = "5\$";
	$str4 = "5円";
	$str5 = "num1";
	$str6 = "hello";
	echo "(1)".(int)$str1.PHP_EOL;//1
	echo "(2)".(int)$str2.PHP_EOL;//0
	echo "(3)".(int)$str3.PHP_EOL;//5
	echo "(4)".(int)$str4.PHP_EOL;//5
	echo "(5)".(int)$str5.PHP_EOL;//0
	echo "(6)".(int)$str6.PHP_EOL;//0
}

function castFloatDouble()
{
	$str1 = "1.23";
	$str2 = "0.5";
	$str3 = "100";
	echo "(1)".(float)$str1.PHP_EOL;//123
	echo "(2)".(float)$str2.PHP_EOL;//0.5
	echo "(3)".(float)$str3.PHP_EOL;//100
}

function castBool()
{
	$str1 = "";
	$str2 = "0";
	$str3 = "1";
	$str4 = "00";
	$str5 = "0.0";
	$str6 = "1.0";
	$str7 = "100";
	$str8 = "hello";
	echo "(1)".$this->boolResult((bool)$str1).PHP_EOL;//false
	echo "(2)".$this->boolResult((bool)$str2).PHP_EOL;//false
	echo "(3)".$this->boolResult((bool)$str3).PHP_EOL;//true
	echo "(4)".$this->boolResult((bool)$str4).PHP_EOL;//true
	echo "(5)".$this->boolResult((bool)$str5).PHP_EOL;//true
	echo "(6)".$this->boolResult((bool)$str6).PHP_EOL;//true
	echo "(7)".$this->boolResult((bool)$str7).PHP_EOL;//true
	echo "(8)".$this->boolResult((bool)$str8).PHP_EOL;//true
}
private function boolResult($value):string
{
	return $value === true ? "true" : "false";
}
function castArray()
{
	$str = "test";
	$ary = (array)$str;
	$str = "a";
	for($i=0; $i
	string(1) "a"
	}
	*/
	$index = 0;
	foreach ($obj as $key => $value) 
	{
	echo "index:$index プロパティ $key の値は $value です。\n";
	++$index;
	}
	//index:0 プロパティ scalar の値は a です。
	$len = mb_strlen($str);
	for($i=0; $i<$len; ++$i)
	{
		echo "i:$i obj:".mb_substr($str, $i, 1).PHP_EOL;
	}
	//i:0 obj:a

	//下記はエラーとなる例
	/*
	$str = "a";
	$obj = (object)$str;
	for($i=0; $icastArray()
	#1 {main}
	thrown in /Applications/MAMP/htdocs/testXXX.php on line lineNo
	*/
}

function castNull()
{
	$str = "test";
	$str = null;
	echo $str ?? "this is null.".PHP_EOL;//this is null.
	$str = "test";
	echo $str ?? "this is null.".PHP_EOL;//test
}
}
echo "<pre>";

$cls2 = new test2();
$cls2->castInt();
$cls2->castFloatDouble();
$cls2->castBool();
$cls2->castArray();
$cls2->castObject();
$cls2->castNull();
echo "</pre>";
copy
class test2
{
	function castInt()
	{ 
		$str1 = "1.23"; 
		$str2 = "0.5"; 
		$str3 = "5\$"; 
		$str4 = "5 yen"; 
		$str5 = "num1"; 
		$str6 = "hello"; 
		echo "(1)".(int)$str1.PHP_EOL;//1 
		echo "(2)".(int)$str2.PHP_EOL;//0 
		echo "(3)".(int)$str3.PHP_EOL;//5 
		echo "(4)".(int)$str4.PHP_EOL;//5 
		echo "(5)".(int)$str5.PHP_EOL;//0 
		echo "(6)".(int)$str6.PHP_EOL;//0
	}
	
	function castFloatDouble()
	{ 
		$str1 = "1.23"; 
		$str2 = "0.5"; 
		$str3 = "100"; 
		echo "(1)".(float)$str1.PHP_EOL;//123 
		echo "(2)".(float)$str2.PHP_EOL;//0.5 
		echo "(3)".(float)$str3.PHP_EOL;//100
	}
	
	function castBool()
	{ 
		$str1 = ""; 
		$str2 = "0"; 
		$str3 = "1"; 
		$str4 = "00"; 
		$str5 = "0.0"; 
		$str6 = "1.0"; 
		$str7 = "100"; 
		$str8 = "hello"; 
		echo "(1)".$this->boolResult((bool)$str1).PHP_EOL;//false 
		echo "(2)".$this->boolResult((bool)$str2).PHP_EOL;//false 
		echo "(3)".$this->boolResult((bool)$str3).PHP_EOL;//true 
		echo "(4)".$this->boolResult((bool)$str4).PHP_EOL;//true 
		echo "(5)".$this->boolResult((bool)$str5).PHP_EOL;//true 
		echo "(6)".$this->boolResult((bool)$str6).PHP_EOL;//true 
		echo "(7)".$this->boolResult((bool)$str7).PHP_EOL;//true 
		echo "(8)".$this->boolResult((bool)$str8).PHP_EOL;//true
	}
	private function boolResult($value):string
	{ 
		return $value === true ? "true" : "false";
	}
	function castArray()
	{ 
		$str = "test"; 
		$ary = (array)$str; 
		$str = "a"; 
		for($i=0; $i 
		string(1) "a" 
		} 
		*/ 
		$index = 0; 
		foreach ($obj as $key => $value) 
		{ 
		echo "index:$index property $key The value of is $value. \n";
		++$index;
		}
		/index:0 The value of the property scalar is a.
		$len = mb_strlen($str); 
		for($i=0; $i<$len; ++$i) 
		{ 
			echo "i:$i obj:".mb_substr($str, $i, 1).PHP_EOL; 
		} 
		//i:0 obj:a 
		
		//The following is an example of an error 
		/* 
		$str = "a"; 
		$obj = (object)$str; 
		for($i=0; $icastArray() 
		#1 {main} 
		thrown in /Applications/MAMP/htdocs/testXXX.php on line lineNo 
		*/
	}
	
	function castNull()
	{ 
	$str = "test"; 
	$str = null; 
	echo $str ?? "this is null.".PHP_EOL;//this is null. 
	$str = "test"; 
	echo $str ?? "this is null.".PHP_EOL;//test
	}
}
echo "<pre>";

$cls2 = new test2();
$cls2->castInt();
$cls2->castFloatDouble();
$cls2->castBool();
$cls2->castArray();
$cls2->castObject();
$cls2->castNull();
echo "</pre>";
$str = "a";
$obj = (object)$str;
for($i=0; $i
count()関数は Countable または arrayである必要があります。
count()関数は、要素の数を数えられる配列 (array) か、
または Countable インターフェースを実装したオブジェクト(例:ArrayObjectなど)しか
引数として受け付けません。
$obj の型は stdClassです。
stdClass は Countable ではありません。
stdClass はPHPの標準的な汎用オブジェクトであり、デフォルトでは要素を数える機能(Countableインターフェース)を持っていません。
したがって、count($obj) を実行しようとすると
count()関数は対象外であるためypeError を発生させて処理が停止(Fatal error)します。

echo $str ?? "this is null.".PHP_EOL;
??はnull合体演算子です。
判定する値がnullの場合は??の後に実行した結果を返す処理です。
もしも$strがnullの場合は"this is null."という結果を返すようにした書き方となります。
[補足]
<td>echo "\101"; は "A" を出力</td>
「\」(バックスラッシュ)は「&#92;」としないとHTMLエラーになることがあります。
[書き方の例]
<td>echo "&#92;101"; は "A" を出力</td>



戻る

著作権情報
ホームページおよプリ等に掲載されている情報等については、いかなる保障もいたしません。
ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、
または公開したりすることはできません。
当方は、ホームページおよびアプリ等を利用したいかなる理由によっての障害等が発生しても、
その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について
一切の責任を負わないものとします。