Php 爆炸后foreach停止
我很奇怪为什么foreach在爆炸后停止,它只返回第一个结果:Php 爆炸后foreach停止,php,foreach,explode,Php,Foreach,Explode,我很奇怪为什么foreach在爆炸后停止,它只返回第一个结果: $disabled_functions = ini_get('disable_functions'); print_r($disabled_functions); $disFunctionsNoSpace = str_replace(' ', '', $disabled_functions); // put them in an array $disFunctions = explode(',', $disFunctionsN
$disabled_functions = ini_get('disable_functions');
print_r($disabled_functions);
$disFunctionsNoSpace = str_replace(' ', '', $disabled_functions);
// put them in an array
$disFunctions = explode(',', $disFunctionsNoSpace);
print_r($disFunctions);
/*
var_dump($disFunctions);
OUTPUT
array (size=33)
0 => string 'curl_multi_exec' (length=15)
1 => string ' parse_ini_file' (length=15)
2 => string ' symlink' (length=8)
3 => string ' shell_exec' (length=11)
4 => string ' proc_close' (length=11)
Etc
*/
$this->disFunctions = $disFunctions;
//print_r($this->disFunctions);
// get file content of the uploaded file (renamed NOT the temporary)
$cFile = file_get_contents($this->fileDestination, FILE_USE_INCLUDE_PATH);
//var_dump($cFile);
foreach($this->disFunctions as $kkeys => $vvals)
{
echo $kkeys.' is '.$vvals.'<br />';
if(preg_match('#'.$vvals.'#i', $cFile))
{
echo 'exists<br />';
return true;
//echo count($this->aErrors).'<br />';
//return false;
}
else
{
echo $vvals.'NOT FOUND<br />';
return false;
}
} // end foreach
$disabled_functions=ini_get('disabled_functions');
打印(禁用的打印功能);
$disFunctionsNoSpace=str_replace(“”,,$disabled_函数);
//把它们排成一列
$disFunctions=explode(“,”,$disFunctionsNoSpace);
打印($disFunctions);
/*
var_dump($disFunctions);
输出
阵列(大小=33)
0=>字符串“curl\u multi\u exec”(长度=15)
1=>字符串“解析ini文件”(长度=15)
2=>字符串“符号链接”(长度=8)
3=>字符串“shell_exec”(长度=11)
4=>字符串'proc_close'(长度=11)
等
*/
$this->disFunctions=$disFunctions;
//打印($this->disFunctions);
//获取上载文件的文件内容(重命名为非临时文件)
$cFile=file\u get\u contents($this->fileDestination,file\u USE\u INCLUDE\u PATH);
//var_dump($cFile);
foreach($this->disFunctions为$kkeys=>$vvals)
{
echo$kkeys.“是”$vvals.“
”;
if(preg#u匹配(“#”.$vvals.#i',$cFile))
{
echo“存在
”;
返回true;
//回声计数($this->aErrors)。“
”;
//返回false;
}
其他的
{
echo$vvals.“未找到
”;
返回false;
}
}//结束foreach
结果是:0为curl\u multi\u exec未找到curl\u multi\u exec
我正在寻找所有的钥匙和VAL的清单
感谢您的支持问题是您的循环中有一个
返回
在foreach
循环中,有一个if
/else
块。无论if
是否满足要求,您都会返回一个值(true
用于if
,false
用于else
)
此返回将终止循环的执行。它还会停止您所在的任何函数(或方法),如果您不在函数中,则停止当前脚本
-
如果从函数中调用,
return
语句将立即结束当前函数的执行,并将其参数作为函数调用的值返回<代码>返回
还结束语句或脚本文件的执行
如果从全局作用域调用,则结束当前脚本文件的执行。如果当前脚本文件为或,则将控制权传递回调用文件。此外,如果当前脚本文件为,则指定给return
的值将作为调用值返回。如果从主脚本文件中调用return
,则脚本执行结束。如果当前脚本文件由php.ini
中的或配置选项命名,则该脚本文件的执行将结束
基于(以及您正在使用$this
)的事实,您的循环位于一个方法中。因此,return
会立即停止循环,停止方法,并根据具体情况返回true
或false
。它从未到达$this->disFunctions
中的第二项。为什么在if和else语句中分别有return true和return false?因为return true
和return false
退出函数。离开函数后,也会结束循环。OHHH,很抱歉我忘记删除它们,这是一个functionReplace$disFunctionsNoSpace=str\u replace(“”,,$disabled\u functions)代码>带有$disFunctionsNoSpace=str_replace(“,”,$disabled_函数)代码>,然后检查并通知我。