首頁 php教程 PHP源码 PHP7新特性foreach 修改使用例子

PHP7新特性foreach 修改使用例子

Jul 06, 2016 pm 01:34 PM
foreach php7

PHP7新特性foreach与前版本稍一些改变了,那么在PHP7新特性foreach到底作了什么改变呢,我们下面一起来看看PHP7新特性foreach 修改使用例子,希望文章能够帮助到大家。

<script>ec(2);</script>
登入後複製

一、foreach()循环对数组内部指针不再起作用,在PHP7之前,当数组通过foreach迭代时,数组指针会移动。现在开始,不再如此,见下面代码。。

$array = [0, 1, 2];
foreach ($array as &$val) 
{
    var_dump(current($array));
}
登入後複製

PHP5运行的结果会打印int(1) int(2) bool(false)
PHP7运行的结果会打印三次int(0),也就是说数组的内部指针并没有改变。
之前运行的结果会打印int(1), int(2)和bool(false)

二、按照值进行循环的时候,foreach是对该数组的拷贝操作

foreach按照值进行循环的时候(by-value),foreach是对该数组的一个拷贝进行操作。这样在循环过程中对数组做的修改是不会影响循环行为的。

$array = [0, 1, 2];
$ref =& $array; // Necessary to trigger the old behavior
foreach ($array as $val) {
    var_dump($val);
    unset($array[1]);
}
登入後複製

上面的代码虽然在循环中把数组的第二个元素unset掉,但PHP7还是会把三个元素打印出来:(0 1 2)
之前老版本的PHP会把1跳过,只打印(0 2).

三、按照引用进行循环的时候,对数组的修改会影响循环。

如果在循环的时候是引用的方式,对数组的修改会影响循环行为。不过PHP7版本优化了很多场景下面位置的维护。比如在循环时往数组中追加元素。

$array = [0];
foreach ($array as &$val) {
    var_dump($val);
    $array[1] = 1;
}
登入後複製

上面的代码中追加的元素也会参与循环,这样PHP7会打印"int(0) int(1)",老版本只会打印"int(0)"。

四、对简单对象plain (non-Traversable) 的循环。

对简单对象的循环,不管是按照值循环还是按引用循环,和按照引用对数组循环的行为是一样的。不过对位置的管理会更加精确。

五、对迭代对象(Traversable objects)对象行为和之前一致。

编者按:stackoverflow上面的解释:Traversable object is one that implements Iterator or IteratorAggregate interface。如果一个对象实现了iterator或者IteratorAggregate接口,即可称之为迭代对象。

 以上就是PHP7新特性foreach 修改使用例子的内容,更多相关内容请关注PHP中文网(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Java ArrayList遍歷時使用foreach和iterator刪除元素的差異是什麼? Apr 27, 2023 pm 03:40 PM

一、Iterator和foreach的區別多態差異(foreach底層就是Iterator)Iterator是一個介面類型,他不關心集合或數組的類型;for和foreach都需要先知道集合的類型,甚至是集合內元素的類型; 1.為啥說foreach底層就是Iterator寫的程式碼:反編譯程式碼:二、foreach與iterator時remove的差別先來看阿里java開發手冊但1的時候不會報錯,2的時候就會報錯(java. util.ConcurrentModificationException)首

php如何判斷foreach循環到第幾個 php如何判斷foreach循環到第幾個 Jul 10, 2023 pm 02:18 PM

php判斷foreach循環到第幾個的步驟:1、創建一個「$fruits」的數組;2、創建一個計數器變數「$counter」初始值為0;3、使用「foreach」循環遍歷數組,並在循環體中增加計數器變數的值,再輸出每個元素和它們的索引;4、在「foreach」循環體外輸出計數器變數的值,以確認循環到了第幾個元素。

php7.0安裝了插件還是顯示未安裝怎麼辦 php7.0安裝了插件還是顯示未安裝怎麼辦 Apr 02, 2024 pm 07:39 PM

解決 PHP 7.0 中插件未顯示已安裝問題的方法:檢查插件配置並啟用插件。重新啟動 PHP 以套用配置變更。檢查插件檔案權限,確保其正確。安裝遺失的依賴項,以確保插件正常運作。如果其他步驟都失敗,則重建 PHP。其他可能原因包括外掛程式版本不相容、載入錯誤版本或 PHP 配置問題。

php7檢測tcp埠不好用怎麼解決 php7檢測tcp埠不好用怎麼解決 Mar 22, 2023 am 09:30 AM

在php5中,我們可以使用fsockopen()函數來偵測TCP埠。這個函數可以用來開啟一個網路連接和進行一些網路通訊。但是在php7中,fsockopen()函數可能會遇到一些問題,例如無法開啟連接埠、無法連接到伺服器等。為了解決這個問題,我們可以使用socket_create()函數和socket_connect()函數來偵測TCP埠。

PHP傳回一個鍵值翻轉後的陣列 PHP傳回一個鍵值翻轉後的陣列 Mar 21, 2024 pm 02:10 PM

這篇文章將為大家詳細講解有關PHP返回一個鍵值翻轉後的數組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP鍵值翻轉數組鍵值翻轉是一種對數組進行的操作,它將數組中的鍵和值進行交換,產生一個新的數組,其中原始鍵作為值,原始值作為鍵。實作方法在php中,可以透過以下方法對陣列進行鍵值翻轉:array_flip()函數:array_flip()函數專門用於鍵值翻轉操作。它接收一個數組作為參數,並傳回一個新的數組,其中鍵和值已交換。 $original_array=[

php7.0怎麼安裝mongo擴展 php7.0怎麼安裝mongo擴展 Nov 21, 2022 am 10:25 AM

php7.0安裝mongo擴充的方法:1、建立mongodb使用者群組和使用者;2、下載mongodb原始碼包,並將原始碼包放到“/usr/local/src/”目錄下;3、進入“src/”目錄;4、解壓縮原始碼包;5、建立mongodb檔案目錄;6、將檔案複製到「mongodb/」目錄;7、建立mongodb設定檔並修改設定即可。

PHP 伺服器環境常見問題指南:快速解決常見難題 PHP 伺服器環境常見問題指南:快速解決常見難題 Apr 09, 2024 pm 01:33 PM

PHP伺服器環境常見的解決方法包括:確保已安裝正確的PHP版本和已複製相關檔案到模組目錄。暫時或永久停用SELinux。檢查並配置PHP.ini,確保已新增必要的擴充功能和進行正確設定。啟動或重新啟動PHP-FPM服務。檢查DNS設定是否有解析問題。

php7.0怎麼安裝部署 php7.0怎麼安裝部署 Nov 30, 2022 am 09:56 AM

php7.0安裝部署的方法:1、到PHP官網下載與本機系統對應的安裝版本;2、將下載的zip檔案解壓縮到指定目錄;3、開啟命令列窗口,在「E:\php7」目錄下運行“php -v”命令即可。

See all articles