php7 の新機能: php7 によってもたらされた変更点
#PHP7 による変更
#1. 文字列処理機構の変更
#16 進文字を含む文字列は数値として見なされなくなり、別の扱いもされなくなりました。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>var_dump("0x123" == "291"); // false
var_dump(is_numeric("0x123")); // false
var_dump("0xe" + "0x1"); // 0
var_dump(substr("f00", "0x1")) // foo</pre><div class="contentsignin">ログイン後にコピー</div></div>
Int64 サポート、さまざまなプラットフォームで整数の長さを統一し、2GB を超える文字列とファイルのアップロードをサポートします。64 ビット PHP7 文字列の長さは 2^31 バイトを超えることがあります。
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>// 无效的八进制数字(包含大于7的数字)会报编译错误
$i = 0681; // 老版本php会把无效数字忽略。
// 位移负的位置会产生异常
var_dump(1 >> -1);
// 左位移超出位数则返回0
var_dump(1 << 64);// 0
// 右位移超出会返回0或者-1
var_dump(100 >> 32);// 0
var_dump(-100 >> 32);// -1</pre><div class="contentsignin">ログイン後にコピー</div></div>
繰り返しのパラメータ命名はサポートされません
function func(b, c) {} ; エラーが報告されます
したがって、次のようになります。関数の最初の行に記録するのが最善であることに注意してください。そうしないと、後で変更があった場合に、再度読み取ったときに渡される初期値ではなくなります。
function foo($x) { $x++; echo func_get_arg(0); } foo(1); //返回2
foreach() ループは配列の内部ポインターでは動作しなくなりました
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>$arr = [1,2,3];
foreach ($arr as &$val) {
echo current($arr);// php7 全返回0
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>$arr = [1,2,3];
foreach ($arr as $val) {
unset($arr[1]);
}var_dump($arr);</pre><div class="contentsignin">ログイン後にコピー</div></div>
最新の php7 では [1,2,3] が出力されます。 (追記: 7.0.0 は動作しません)
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>$arr = [1];
foreach ($arr as $val) {
var_dump($val);
$arr[1]=2;
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
最新の php7 では、新しい要素のサイクルが引き続き追加されます。 (ps: 7.0.0 は機能しません)
は逆の順序で値を割り当てなくなりました
/ /$arr は、以前の [3,2,1]
list($arr[], $arr[], $arr[]) = [1,2,3];
// $x = null 并且 $y = null $str = 'xy'; list($x, $y) = $str;
は文字列分割関数をサポートしなくなりました
list() = [123];
空の list() の代入は許可されなくなりました #list($a, $b) = (object)new ArrayObject([0, 1]);
#list() は配列オブジェクトに対しても機能するようになりました
$arr = []; $arr['a'] = &$arr['b'];$arr['b'] = 1; // php7: ['a' => 1, 'b' => 1] // php5: ['b' => 1, 'a' => 1]
6 .変数処理メカニズムの変更
変数、プロパティ、メソッドへの間接的な呼び出しは、いくつかの特殊なケースが混在するのではなく、厳密に左から右の順序で解析されるようになりました。 。以下の表は、解析順序におけるこの変更を示しています。
rrreee
1.debug_zval_dump() は、「long」の代わりに「int」を出力し、「double」の代わりに「float」を出力します。
2.dirname()追加オプション 2 番目のパラメータ Depth は、現在のディレクトリから 1 つ上のレベルの親ディレクトリの名前を取得します。
3.getrusage() は Windows.mktime() をサポートするようになり、gmmktime() 関数は is_dst パラメーターを受け入れなくなりました。
4. preg_replace() 関数は「\e」 (PREG_REPLACE_EVAL) をサポートしなくなりました。代わりに Preg_replace_callback() を使用する必要があります。
5. setlocale() 関数は、カテゴリ入力文字列を受け入れなくなりました。 LC_* 定数を使用する必要があります。
6.exec()、system()、および passthru() 関数には、NULL に対する保護が追加されました。
7.shmop_open() は、int ではなくリソースを返すようになりました。このリソースは次のとおりです。 shmop_size()、shmop_write()、shmop_read()、shmop_close()、および shmop_delete() に渡されます。
8. メモリ リークを回避するために、xml_set_object() は実行終了時に $parse を手動でクリアする必要があります。 。
9.curl_setopt 設定項目 CURLOPT_SAFE_UPLOAD の変更
TRUE は、CURLOPT_POSTFIELDS でのファイル送信の @ プレフィックスを無効にします。これは、@ をフィールドで安全に使用できることを意味します。 CURLFile はアップロードの代替として使用できます。
PHP 5.5.0 で追加されました。デフォルト値は FALSE です。 PHP 5.6.0 では、デフォルト値が TRUE に変更されます。 PHP 7 ではこのオプションが削除されたため、ファイルをアップロードするには CURLFile インターフェイスを使用する必要があります。
推奨チュートリアル:「
以上がphp7 の新機能: php7 によってもたらされた変更点の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 7.0 でインストールされているプラグインが表示されない問題を解決するには: プラグインの設定を確認し、プラグインを有効にします。 PHP を再起動して、構成の変更を適用します。プラグイン ファイルの権限をチェックして、それらが正しいことを確認します。不足している依存関係をインストールして、プラグインが適切に機能することを確認します。他のすべての手順が失敗した場合は、PHP を再構築します。他に考えられる原因としては、プラグインのバージョンに互換性がない、間違ったバージョンをロードしている、PHP 構成の問題などが挙げられます。

php5 では、fsockopen() 関数を使用して TCP ポートを検出できます。この機能を使用して、ネットワーク接続を開き、ネットワーク通信を実行できます。ただし、php7 では、fsockopen() 関数でポートを開けない、サーバーに接続できないなどの問題が発生する可能性があります。この問題を解決するには、socket_create() 関数とsocket_connect() 関数を使用して TCP ポートを検出します。

php7.0 に mongo 拡張機能をインストールする方法: 1. mongodb ユーザー グループとユーザーを作成します; 2. mongodb ソース コード パッケージをダウンロードし、ソース コード パッケージを "/usr/local/src/" ディレクトリに配置します; 3. 「src/」ディレクトリに入ります; 4. ソースコードパッケージを解凍します; 5. mongodb ファイルディレクトリを作成します; 6. ファイルを「mongodb/」ディレクトリにコピーします; 7. mongodb 設定ファイルを作成して設定を変更します。

PHP サーバー環境の一般的な解決策には、正しい PHP バージョンがインストールされていること、および関連ファイルがモジュール ディレクトリにコピーされていることを確認することが含まれます。 SELinux を一時的または永続的に無効にします。 PHP.ini をチェックして構成し、必要な拡張機能が追加され、正しく設定されていることを確認します。 PHP-FPM サービスを開始または再起動します。 DNS 設定に解決の問題がないか確認してください。

php7.0 をインストールおよび展開する方法: 1. PHP 公式 Web サイトにアクセスして、ローカル システムに対応するインストール バージョンをダウンロードします; 2. ダウンロードした zip ファイルを指定したディレクトリに解凍します; 3. コマンド ライン ウィンドウを開いて、次のリンクに移動します。 「E:\php7」ディレクトリ 「php -v」コマンドを実行するだけです。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHP7 と比較すると、PHP8 にはパフォーマンス、新機能と構文の改善、型システム、エラー処理と拡張機能の点でいくつかの利点と改善点があります。ただし、どのバージョンを使用するかは、特定のニーズとプロジェクトの状況によって異なります。詳細な紹介: 1. パフォーマンスの向上、PHP8 はコードの実行速度を向上できるジャストインタイム (JIT) コンパイラーを導入します; 2. 新機能と構文の改善、PHP8 は名前付きパラメーターとオプションのパラメーターの宣言をサポートします。関数の作成 呼び出しがより柔軟になり、匿名クラス、プロパティの型宣言などが導入されています。

エラーの原因とソリューションPECLを使用してDocker環境に拡張機能をインストールする場合、Docker環境を使用するときに、いくつかの頭痛に遭遇します...
