0
$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

4 回答 4

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
于 2013-10-15T08:00:56.770 回答
2

利用array_filter()

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

文档

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

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

文档

不同之处在于,这strpos()可能比preg_grep()正则表达式可能更昂贵。这完全取决于您正在搜索的数据大小。

于 2013-10-15T08:07:19.857 回答
0

正则表达式来拯救!

$filtered = preg_grep ('/^TEST/', $data);
于 2013-10-15T08:08:14.920 回答
-1

你可以这样做:

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

它的作用是检查哪个位置 data[$i] 包含字符串“TEST”。如果没有找到,它将返回 false。

于 2013-10-15T08:05:46.807 回答