如何从包含前缀“TEST”的数组中检索这些条目?

时间:2013-10-15 07:58:20

标签: php arrays string

$data[0] = "TESTaabsc";
$data[1] = "ffgaabsc";
$data[2] = "TESTffga";

for($i=0; $i<sizeof($data); $i++)
{
if (!is_null($data[$i][0]) && (???)) 
{
//...
}
}

如何从$data中检索包含前缀TEST的那些条目?

4 个答案:

答案 0 :(得分:3)

使用strpos()

for($i=0; $i<sizeof($data); $i++)
{
    if(strpos($data[$i], 'TEST') === 0)
    {
        // $data[$i] has the prefix
    }
}

或者要在新数组中获取匹配项,您可以使用array_filter()

$result = array_filter($data, function($var){
    return strpos($var, 'TEST') === 0;
});

print_r($result); // $result is an array containing the matches only

答案 1 :(得分:2)

使用array_filter()

$results = array_filter($data, function ($value) {
    return 0 === strpos($value, 'TEST');
});

Documentation

或者如果您熟悉正则表达式,请尝试preg_grep()

$results = preg_grep('/^TEST/', $data);

Documentation

不同之处在于strpos()可能比preg_grep()更快,因为正则表达式可能很昂贵。这一切都取决于您正在搜索的数据大小。

答案 2 :(得分:0)

正常表达救援!

$filtered = preg_grep ('/^TEST/', $data);

答案 3 :(得分:-1)

你可以这样做:

if (!is_null($data[$i][0]) && strpos($data[$i], 'TEST')) {
//...
}

这样做是检查哪个位置数据[$ i]包含字符串'TEST'。如果未找到,则返回false。