2013-10-13 66 views
0

我有這樣的陣列:刪除數組值文本

$array = array(
    [0] => "obm=SOME_TEXT", 
    [1] => "sbm=SOME_TEXT", 
    [2] => "obm=SOME_TEXT" 
); 

如何刪除含有值obmsbm(總是在陣列中的柱的頂部)陣列的元件(一個或多個)和更新索引?

實施例1:

print_r(arrRemove("smb", $array)); 

輸出:

$array = array(
    [0] => "obm=SOME_TEXT", 
    [1] => "obm=SOME_TEXT" 
); 

實施例2:

print_r(arrRemove("omb", $array)); 

輸出:

$array = array(
    [0] => "sbm=SOME_TEXT" 
); 
+0

我不知道我該怎麼做... – Xriuk

回答

0

你可以簡單地通過數組循環使用foreach然後用strpos()來檢查,如果數組包含給定的輸入字符串,並array_values()可更新索引:

function arrRemove($str, $input) { 
    foreach ($input as $key => $value) {    
     // get the word before '=' 
     list($word, $text) = explode('=', $value); 

     // check if the word contains your searchterm 
     if (strpos($word, $str) !== FALSE) { 
      unset($input[$key]); 
     } 
    } 
    return array_values($input); 
} 

用法:

print_r(arrRemove('obm', $array)); 
print_r(arrRemove('sbm', $array)); 

輸出:

Array 
(
    [0] => sbm=SOME_TEXT 
) 

Array 
(
    [0] => obm=SOME_TEXT 
    [1] => obm=SOME_TEXT 
) 

Demo!

+0

@Downvoter:照顧解釋? –

+0

這不會更新索引。 –

+0

它不會更新索引 – Xriuk

0

也許這樣?

$newarray = array_values(array_filter($oldarray, function($value){ 
    return strpos($value, 'obm') !== 0; 
} 
)); 
+0

我添加了一個array_values來更新索引。 –