[英]Finding a string by looping through an array php
我有這個數組$ filelist
Array ( [0] => . [1] => .. [2] => .DS_Store [3] => 11-96.eml [4] => 11-97.eml )
這是特定目錄中所有文件的列表...有時沒有.DS_Store文件,有時有,有時有2個eml文件,有時有多達6個。我試圖遍歷並查找存在一個.eml文件的第一個數組位置,以便我可以計算出eml文件的數量以及從何處開始引用該數組..我已經嘗試過...
function firstFileInList($filelist) {
$x = 0;
foreach ($filelist as $value) {
if(strpos($filelist, ".eml") == false) {
$x = $x + 1;
//break;
}
}
return $x;
}
這將返回5,如果我包含break,則它將返回1,並且我希望得到4。
請有人指出正確的方向,或者即使有完全更好的方法來做到這一點,那么我也將不勝感激……
謝謝保羅,
即使在調用PHP循環時,
break
也會直接存在,即使有其他元素也是如此。 使用continue
來進入下一個元素。
根據您的問題
我試圖遍歷並找到存在.eml文件的第一個數組位置
function firstFileInList($filelist) {
foreach($filelist as $k => $v)
if(strpos($v, ".eml") !== false)
return $k;
return false;
}
從foreach中的數組中獲取鍵的最佳方法是在鍵開始之前對其進行定義。 嘗試使用以下方法更新代碼:
function firstFileInList($filelist) {
$x = false;
foreach ($filelist as $key => $value) {
if(strpos($value, ".eml") == false) {
$x = $key;
break;
}
}
return $x;
}
這樣做是將$ x設置為實際鍵,而不是像for()循環中那樣遞增的數字。 $ key將始終是數組鍵,因此在此示例中為0、1、2、3、4。
function firstFileInList($filelist) {
$key=false;
foreach ($filelist as $key=>$value) {
if(strpos($value, ".eml") !==false){
break;
}
}
return $key;
}
如果沒有匹配項,您將得到假。
問題出在這里:
foreach ($filelist as $value) {
if(strpos($filelist, ".eml") == false) {
請注意,對於您所編寫的foreach循環,它將獲取$filelist
數組的每個元素,並將其放入$value
變量中。 也許您沒有在PHP中打開警告,但是當我嘗試您的代碼時,得到了以下信息:
Warning: strpos() expects parameter 1 to be string, array given in test/a.php on line 6
你想要的是
foreach ($filelist as $value) {
if(strpos($value, ".eml") == false) {
$x = $x + 1;
}
}
注意第二行中的$value
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.