ホームページ  >  記事  >  バックエンド開発  >  PHPに散在する知識をまとめる

PHPに散在する知識をまとめる

巴扎黑
巴扎黑オリジナル
2017-08-13 14:36:311389ブラウズ

今日は、編集者が PHP に関する豆知識をいくつか紹介します。非常に優れており、必要な友人は参照してください。

PHP は単一引用符、変数補間、または (ほとんど) をチェックしません。文字列内のあらゆる変換が行われるため、一重引用符を使用して文字列を定義するのは非常に簡単かつ高速です。ただし、二重引用符 "" の場合はこの限りではありません。PHP は文字列内の変数またはエスケープ シーケンスをチェックし、変数とエスケープ シーケンスの値を出力します。


$a = "123";
print '$a\t';
print '$a';

出力:


$a\t$a

二重引用符「」の場合:


$a = "123";
print "$a\t";
print "$a";

出力:

注:

単一引用符 '' で説明できます' と \ この 2 つのエスケープ文字、それだけです!

は、一重引用符文字に可能な限り一重引用符を使用させることができます。一重引用符は二重引用符より効率的です (二重引用符は、操作する前に変数があるかどうかを確認するために最初に調べる必要があるのに対し、一重引用符はその必要がないためです)。判断される)。

単一引用符 '' と二重引用符 "" を使用できます

echo と print の違い:

これらはどちらもステートメントであり、関数ではありません。両方のステートメントの機能は文字列を出力することです。ただし:

echo は複数のパラメータを渡すことができます。印刷は 1 つだけです:


echo "123", "123";//输出123123
print "123", "123";//报错,只可以写一个参数 print "123";

echo には戻り値がありません。印刷の戻り値は常に 1 です。

注:

PHP の 8 つのデータ型 (配列と __toString を除く) は、実装された Magic 関数オブジェクトは echo または print を使用して出力でき、boolean 型オブジェクトは echo または print を使用して出力でき、1 かどうかのみが表示されます。


echo true; //输出1
echo false; //什么都不输出

数値と文字列の追加:

PHP は文字列と数値の変換を自動的に完了します。これは利点をもたらす場合もありますが、非常に煩わしい場合もあります。


echo 1 + "2";//输出3
echo 1 + "a";//输出1

$a = 1 + "A"; 変数 $a のデータ型は何ですか?


if(is_numeric($a)){
  echo "是整型";
}
else{
  echo "是其他类型";
}
//最后输出:是整型

rand() と mt_rand() の違い:

rand() と mt_rand() の使用法はそれぞれまったく同じです:


//第一种用法:
rand();//产生的随机数为0到getrandmax()之间
mt_rand();//产生的随机数为0到mt_getrandmax()之间
//第二种用法:
rand($min, $max);//产生从$min到$max之间的随机数
mt_rand($min, $max);//产生从$min到$max之间的随机数

違い: mt_rand() は、rand() よりも優れた乱数シードを播種するため、より優れた乱数生成器であり、パフォーマンスは rand()、mt_getrandmax() よりも 4 倍高速です。大きい

BCMath ライブラリと GMP ライブラリの違い:

BCMath ライブラリは使いやすいです。数値を文字列として関数に渡すと、数値の合計 (または差、積など) が文字列として返されます。ただし、BCMath を使用する場合、数値に対して実行できる演算は基本的な算術演算に限定されます。


$sum = bcadd("12345678", "87654321");//$sum = "99999999"

GMP 関数は、パラメータとして整数または文字列を受け入れることができますが、実際には数値の内部表現へのポインタである数値をリソースとして渡すことを好みます。したがって、文字列を返す BCMath 関数とは異なり、GMP はリソースのみを返します。このリソースは、任意の GMP 関数に数値として渡すことができます。


$four = gmp_add(2, 2);//可以传入整数
$eight = gmp_add('4', '4');//或字符串
$twelve = gmp_add($four, $eight);//或GMP资源

GMP の唯一の欠点は、非 GMP 関数でリソースを表示または使用する場合、gmp_strval() または gmp_intval() を使用して明示的に変換する必要があることです。

BCMath は PHP にバンドルされています。GMP が PHP にバンドルされていない場合は、別途ダウンロードしてインストールする必要があります。高精度の数学演算を実現するためのもう 1 つのオプションは、PECL の big_int ライブラリを使用することです。

include と require の違い:

include() ステートメントと require() ステートメントは、指定されたファイルをインクルードして実行します。インクルード ファイルという点では 2 つの構造はまったく同じです。唯一の違いはエラー処理です。

•require() ステートメントは、インクルード ファイルが存在しない場合、またはエラーが発生した場合、実行を停止してレポートします。エラー。
•include() は、インクルードされたファイルが存在しない場合にのみ警告を生成し、スクリプトは続行されます。

言い換えれば、ファイルが見つからないときにページの処理を停止したい場合は、ためらわず require() を使用してください。 include() の場合はそうではなく、スクリプトは引き続き実行されます。

include_once と require_once

•include_once() は、require_once() と同様、スクリプトの実行中に同じファイルが複数回インクルードされる可能性があり、確実に 1 回だけインクルードされるようにする場合に使用する必要があります。関数の再定義や変数の再割り当てなどの問題を回避します。これが、include_once() と require_once()、および include() と require() の主な違いです。
•require_once() と include_once() は、最初の 2 つはインポートするファイルが既に存在するかどうかを判断する必要があるため、require() と include() よりも効率が低くなります。 `

PHP merge array + と array_merge() の違い

同为数组合并,但是还是有差别的:

•键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)


$a = array('a','b'); 
$b = array('c', 'd'); 
$c = $a + $b; 
var_dump($c);
//输出:
// array (size=2)
// 0 => string 'a' (length=1)
// 1 => string 'b' (length=1) 
var_dump(array_merge($a, $b));
//输出:
//array (size=4)
// 0 => string 'a' (length=1)
// 1 => string 'b' (length=1)
// 2 => string 'c' (length=1)
// 3 => string 'd' (length=1)

•键名为字符时,+仍然把最先出现的键名的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值


$a = array('a' => 'a' ,'b' => 'b');
$b = array('a' => 'A', 'b' => 'B');
$c = $a + $b;
var_dump($c);
//输出:
//array (size=2)
//'a' => string 'a' (length=1)
//'b' => string 'b' (length=1)
var_dump(array_merge($a, $b));
//输出:
//array (size=2)
//'a' => string 'A' (length=1)
//'b' => string 'B' (length=1)

字符串常用函数

PHP提供了很多方便的字符串函数,常用的有:

•strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 。返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。若为before_needle为 TRUE,strstr() 将返回 needle 在 haystack 中的位置之前的部分。
•substr( string $string , int $start [, int $length ] ) 。返回字符串 string 由 start 和 length 参数指定的子字符串。
•substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] ) 。substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换。
•strrev ( string $string ) 。返回 string 反转后的字符串。
•str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) 。该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。subject为执行替换的数组或者字符串。也就是 haystack。如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。如果count被指定,它的值将被设置为替换发生的次数。
•strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) 。返回 needle 在 haystack 中首次出现的数字位置;如果提供了offset参数,搜索会从字符串该字符数的起始位置开始统计。 如果是负数,搜索会从字符串结尾指定字符数开始。
•ltrim() 、 rtrim() 、 trim() 。这仨都是删除字符串中的空白符。 ltrim() 删除字符串开头的空白字符; rtrim() 删除字符串末端的空白字符; trim() 去除字符串首尾处的空白字符。 

以上がPHPに散在する知識をまとめるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。