如果元素以特定值开头,则从数组中删除键

时间:2015-04-09 16:05:26

标签: php arrays unset

如何删除以TOR示例键[27]开头的元素。

Array
(
    [1] => memory_target
    [2] => vif_2_rx
    [3] => vif_2_tx
    [4] => memory
    [5] => vbd_xvda_read
    [6] => vbd_xvda_write
    [7] => vbd_xvdd_read
    [8] => vbd_xvdd_write
    [9] => vif_1_rx
    [10] => vif_1_tx
    [11] => vif_0_rx
    [12] => vif_0_tx
    [13] => cpu0
    [27] =>  TOR-SRV65
)

这是我到目前为止所尝试的。

if(($key = array_search($del_val, $messages)) !== false) {
    unset($messages[$key]);
}

但是还没能让它上班!

3 个答案:

答案 0 :(得分:0)

您可以简单地array_filter()开头TOR的元素,如下所示:

$messages = array_filter($messages, function($v){
    return !(substr(trim($v), 0, 3) === "TOR");
});

不区分大小写的版本:

$messages = array_filter($messages, function($v){
    return !(strtoupper(substr(trim($v), 0, 3)) === "TOR");
});

修改

使用preg_grep()更简单(如果您希望区分大小写,请删除修饰符i):

$messages = preg_grep ("/[^\bTOR]/i", array_map("trim", $messages));

答案 1 :(得分:0)

尝试:

$array = array(
    'memory_target',
    'vif_2_rx',
    'TOR-SRV65'
);

foreach ($array as $key => $value) {
    if (strtolower(substr($value, 0, 3)) == 'tor') {
        unset($array[$key]);
    }
}

print_r($array); // Output => Array ( [0] => memory_target [1] => vif_2_rx )

答案 2 :(得分:0)

我正在使用此函数从数组中删除键

function removeValueFromArray($array, $key, $value){
   foreach($array as $subKey => $subArray){
      if($subArray[$key] == $value){
      unset($array[$subKey]);
      }
   }
   return $array;
}

此函数根据特定值从数组中删除键并返回最终数组