php7 の新機能: php7 によってもたらされた変更点

L
リリース: 2023-02-17 15:32:01
転載
2600 人が閲覧しました

php7 の新機能: php7 によってもたらされた変更点

#PHP7 による変更

#1. 文字列処理機構の変更

#16 進文字を含む文字列は数値として見なされなくなり、別の扱いもされなくなりました。

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">var_dump(&quot;0x123&quot; == &quot;291&quot;); // false var_dump(is_numeric(&quot;0x123&quot;)); // false var_dump(&quot;0xe&quot; + &quot;0x1&quot;); // 0 var_dump(substr(&quot;f00&quot;, &quot;0x1&quot;)) // foo</pre><div class="contentsignin">ログイン後にコピー</div></div>

2. 整数処理メカニズムの変更

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 &gt;&gt; -1); // 左位移超出位数则返回0 var_dump(1 &lt;&lt; 64);// 0 // 右位移超出会返回0或者-1 var_dump(100 &gt;&gt; 32);// 0 var_dump(-100 &gt;&gt; 32);// -1</pre><div class="contentsignin">ログイン後にコピー</div></div>

3. パラメータ処理メカニズムの変更

繰り返しのパラメータ命名はサポートされません

function func(b, c) {} ; エラーが報告されます

2 つのメソッド func_get_arg() と func_get_args() は、渡された値ではなくパラメータの現在の値を返します。現在の値は変更される可能性があります。

したがって、次のようになります。関数の最初の行に記録するのが最善であることに注意してください。そうしないと、後で変更があった場合に、再度読み取ったときに渡される初期値ではなくなります。

function foo($x) {
$x++;
echo func_get_arg(0);
}
foo(1); //返回2
ログイン後にコピー

4.foreach の変更

foreach() ループは配列の内部ポインターでは動作しなくなりました

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$arr = [1,2,3]; foreach ($arr as &amp;$val) { echo current($arr);// php7 全返回0 }</pre><div class="contentsignin">ログイン後にコピー</div></div>

値に従ってループする場合、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) { unset($arr[1]); }var_dump($arr);</pre><div class="contentsignin">ログイン後にコピー</div></div>最新の php7 では [1,2,3] が出力されます。 (追記: 7.0.0 は動作しません)

古いものでは [1,3]


リファレンスに従ってループする場合、配列への変更はループに影響します

<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 は機能しません)

5. リストの変更

は逆の順序で値を割り当てなくなりました

/ /$arr は、以前の [3,2,1]

list($arr[], $arr[], $arr[]) = [1,2,3];
ログイン後にコピー

ではなく [1,2,3] になります。

// $x = null 并且 $y = null
$str = &#39;xy&#39;;
list($x, $y) = $str;
ログイン後にコピー
は文字列分割関数をサポートしなくなりました

list() = [123];
ログイン後にコピー
空の list() の代入は許可されなくなりました

#
list($a, $b) = (object)new ArrayObject([0, 1]);
ログイン後にコピー

#list() は配列オブジェクトに対しても機能するようになりました

$arr = [];
$arr[&#39;a&#39;] = &$arr[&#39;b&#39;];$arr[&#39;b&#39;] = 1;
// php7: [&#39;a&#39; => 1, &#39;b&#39; => 1]
// php5: [&#39;b&#39; => 1, &#39;a&#39; => 1]
ログイン後にコピー

6 .変数処理メカニズムの変更

変数、プロパティ、メソッドへの間接的な呼び出しは、いくつかの特殊なケースが混在するのではなく、厳密に左から右の順序で解析されるようになりました。 。以下の表は、解析順序におけるこの変更を示しています。

php7 の新機能: php7 によってもたらされた変更点

#参照代入中に自動的に作成される配列要素またはオブジェクト属性の順序が以前と異なります

rrreee

7. その他

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 の新機能: php7 によってもたらされた変更点の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!