亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談PHP中foreach/in_array的使用

 更新時間:2015年11月02日 08:56:11   投稿:hebedich  
本文給大家簡單總結(jié)了一下PHP中foreach以及in_array的使用,包括在使用中常遇到的問題等信息,非常的實(shí)用,有需要的小伙伴可以參考下。

php在開發(fā)效率很高,這是無可厚非的,但是卻是在犧牲執(zhí)行效率的。php數(shù)組功能非常強(qiáng)大,但是也要多加考慮,多試幾種情況情況,以防萬一,這里,我就簡單的說兩個遇到的坑,以后如果有發(fā)現(xiàn)更多的,再補(bǔ)上吧!

  foreach 提供了遍歷數(shù)組的簡單方式,可以很方便的讀取到數(shù)據(jù)或?qū)ο蟮膬?nèi)容,但是官方文檔說了,由于 foreach 依賴內(nèi)部數(shù)組指針,在循環(huán)中修改其值將可能導(dǎo)致意外的行為。所以,基本上,
1、不要想在循環(huán)內(nèi)部修改里面的值,否則結(jié)果將超出你想要的;
2、使用'&'是一個安全的方式,雖然很少用到,但是在用到時,在引用結(jié)束后,應(yīng)立即調(diào)用unset函數(shù)銷毀該變量,否則,在接下來的代碼里,如果有再次使用到此變量,那么循環(huán)的最后一次值就將被修改了,從而得到了意外的值,比如:在列表循環(huán)輸出時,最后一行輸出將會出現(xiàn)許多亂七八糟的值或者空值。使用unset可解決此問題。

我們來看個示例

<?php 
/*-------------------------------------------------------------------------*/ 
/* foreach example 1: value only */ 
echo "foreach example 1: value only ".'<br />'; 
$a = array(1, 2, 3, 17); 
foreach ($a as $v) { 
echo "Current value of ".$a.":". $v."<br />"; 
} 
?> 
// 運(yùn)行結(jié)果 
foreach example 1: value only 
Current value of $a: 1 
Current value of $a: 2 
Current value of $a: 3 
Current value of $a: 17 

  in_array,其含義是檢查前一個字符串是否存在于后一個數(shù)組當(dāng)中,而且大多數(shù)情況下,它也是這么工作的,但是當(dāng)后面的數(shù)組是整數(shù)時,如array(0,1,2,3)時,就出問題了,php會將前的字符串進(jìn)行intval,從而都會得到0這個值,那么如果恰巧,你的數(shù)組當(dāng)中有這個值,那么等式就成立了,是不是又超出了預(yù)期呢?
所以,當(dāng)確定后面的數(shù)據(jù)是整數(shù)時,尤其是還有可能為0(這個可能代替所有的字符串了),你就千萬不能再使用這個函數(shù)了,可使用key_exists來代替,但是后面的數(shù)據(jù)則需要使用array_flip進(jìn)行倒轉(zhuǎn)操作了。

我們再來看個示例

function search($keyWord, $stack) {//此處判斷是應(yīng)該更新還是插入

      foreach ($stack as $key => $val) {

        if (in_array($keyWord, $val)) {

          return TRUE;

        }

      }

      return FALSE;

    }

  當(dāng)一個字符串被當(dāng)作數(shù)組來去取值時,又會發(fā)生什么呢?php是一門容錯性很強(qiáng)的語言,它會盡量幫你改正錯誤,所以很聰明地將你的引用下標(biāo)轉(zhuǎn)化為整數(shù),當(dāng)然就得到0了,那么字符串下標(biāo)為0取值則又會得到第一個字符串的值,是不是又超出了你的預(yù)期呢?解決方法是,在引用下標(biāo)之前,還是確認(rèn)一下這個變量是不是一個數(shù)組吧,is_array。

  雖然有許許多多的前輩遇到這樣或那樣的問題,也在不停地說,但是我們終究還是免不了,不停去犯錯。這也許就是社會吧!大家都這么忙,哪有時間去破解你那爛代碼! 哈哈

相關(guān)文章

最新評論