2013-10-15 31 views
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如何從包含前綴「TEST」的數組中檢索這些條目?

+0

可能重複http://stackoverflow.com/questions/19361477/find-part-of-a-string-and-remove-it -from-an-an-an-an-an-an-an-an-an-an-an-an-an-an-array) –

回答

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

你可以這樣做:

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

該做些什麼檢查數據[$ i]包含字符串'TEST'的位置。如果沒有找到,它將返回false。

+0

給出一個很好的答案,而不是隻指出代碼 – Praveen

+1

好點,更新 – user2622597

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()更快,因爲正則表達式可能很昂貴。這一切都取決於您正在搜索的數據大小。

0

正則表達式來拯救!

$filtered = preg_grep ('/^TEST/', $data); 
的[查找的字符串的一部分,並且從一個數組中刪除它(
+1

認真?這樣一個簡單的字符串操作的正則表達式? – str

+0

是的,爲什麼不呢?這種方式的代碼更加簡潔,不是嗎? – Septagram

+1

正則表達式很昂貴。我沒有看到你的代碼應該比'strpos($ data,'TEST')=== 0'更緊湊。 – str

相關問題