删除包含给定文本的数组值


Delete array value containing given text

我有这个数组:

$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"
);

您可以使用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
)

演示!

也许是这样的?

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

由PHP处理的

php.net/manual/en/function.array-pop.php

array_pop() 弹出并返回数组的最后一个值,将数组缩短一个元素。