从另一个数组元素中取消设置数组中的一批键

时间:2015-10-26 03:08:47

标签: php arrays

我有一个数组:

$array = Array
(
    [0] => qst
    [1] => insert_question_note
    [2] => preview_ans
    [3] => _preview
    [4] => view_structure_answer_preview
    [5] => index
}

我需要根据

中的元素取消设置数组键
$array_elements_to_be_remove = array('qst','_preview'); // or any string start with '_'

我试图使用:

$array_key = array_search('qst', $array);
unset($array[$array_key]);

$array_key_1 = array_search('_preview', $array);
unset($array[$array_key_1]);

还有其他更好的方法可以在 $ array 中搜索批量元素吗?

我希望如果我能像这样使用数组搜索:

$array_keys_to_be_unset = array_search($array_elements_to_be_remove, $array);

我找到了一种搜索字符串的方法,如果它以'_'开头,如下所示:

substr('_thestring', 0, 1)

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

你可以使用php build function array_diff:

$arr=array_diff($array1, $array2);

Refer this php docs

答案 1 :(得分:1)

您可以使用array_filter

$array = Array(
    0 => 'qst',
    1 => 'insert_question_note',
    2 => 'preview_ans',
    3 => '_preview',
    4 => 'view_structure_answer_preview',
    5 => 'index'
);

$array_elements_to_be_remove = array('qst', '_preview'); // or any string start with '_'
$new_array = array_filter($array, function($item)use($array_elements_to_be_remove) {
    if (in_array($item, $array_elements_to_be_remove) || $item[0] == '_')
        return false; // if value in $array_elements_to_be_remove or any string start with '_'
    else
        return true;
});
var_dump($new_array);