嗨我有一个大约20/30项的阵列。
我需要让它循环抛出数组并仅回显出包含文本p1的项目。
数组看起来像这样
"lolly","lollyp1","top","topp1","bum","bump1","gee","geep1"
等等
我试过用这样的东西
foreach ($arr as $value) {
$needle = htmlspecialchars($_GET["usr"]);
$ret = array_keys(array_filter($arr, function($var) use ($needle){
return strpos($var, $needle) !== false;
}));
但这一切都给了我一个空白页面或1s
我如何让它回显出p1中的项目?
答案 0 :(得分:0)
试试这个:
$needle = htmlspecialchars($_GET["usr"]);
$rtnArray = array();
foreach ($arr as $value) {
$rtnArray = strpos($value,$needle);
};
return $rtnArray;
如果您尝试直接写入页面,则会丢失$ rtnarray和echo:
$needle = htmlspecialchars($_GET["usr"]);
foreach ($arr as $value) {
echo strpos($value,$needle);
};
要仅显示带有'p1'的那些,请过滤:
$needle = htmlspecialchars($_GET["usr"]);
foreach ($arr as $value) {
$temp = strpos($value,$needle);
if($temp > 1){
echo $value;
}
};
答案 1 :(得分:0)
使用带字符串比较的直接循环将是一个简单的方法:
$needle = $_GET['usr'];
$matches = array();
foreach ($arr as $key => $value) {
if (strpos($value, $needle) !== false) {
$matches[] = $key;
}
}
在您的帖子中使用array_filter()
应,等待您正在使用的PHP版本。尝试更新以使用单独的/定义的函数:
function find_needle($var) {
global $needle;
return strpos($var, $needle) !== false;
}
$ret = array_keys(array_filter($arr, 'find_needle'));
Codepad Example第二个样本