php数组回显包含p1的值

时间:2014-09-22 14:15:26

标签: php arrays echo contains

嗨我有一个大约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中的项目?

2 个答案:

答案 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第二个样本