如何删除php中的一些数组键

时间:2013-12-29 10:14:56

标签: php arrays

例如有这样一个数组:

Array
(
    [ID] => 4
    [DATE_CREATE] => 04.10.2013 20:47:52
    [NAME] => BCAA
    [DEPTH_LEVEL] => 1
    [DESCRIPTION] => 
    [SEARCHABLE_CONTENT] => BCAA
    [CODE] => bcaa
    [DETAIL_PICTURE] =>
)

如何删除一些数组键以最终收到以下内容:

Array
(
    [ID] => 4
    [DATE_CREATE] => 04.10.2013 20:47:52
    [NAME] => BCAA
    [DEPTH_LEVEL] => 1
)

提前致谢。

7 个答案:

答案 0 :(得分:7)

使用unset

unset($array['DESCRIPTION']);
unset($array['SEARCHABLE_CONTENT'];
... and so on

答案 1 :(得分:5)

嗯,有一个名为array_diff_key()的函数:

$result = array_diff_key(
    $array,
    [
        'DESCRIPTION' => 0,
        'SEARCHABLE_CONTENT' => 0,
        'CODE' => 0,
        'DETAIL_PICTURE' => 0
    ]
);

UPDv1:

有一种方法,由 @BluePsyduck 提及:

$result = array_diff_key(
    $array,
    array_flip([ 'DESCRIPTION', 'SEARCHABLE_CONTENT', 'CODE', 'DETAIL_PICTURE' ])
);

答案 2 :(得分:3)

利用array_slice,您不需要unset这里的密钥,因为您将从array_slice()返回的数组直接分配给同一个数组。

<?php
$arr=Array
(
    'ID' => 4,
    'DATE_CREATE' => '04.10.2013 20:47:52',
    'NAME' => 'BCAA',
    'DEPTH_LEVEL' => 1,
    'DESCRIPTION' => NULL,
    'SEARCHABLE_CONTENT' => 'BCAA',
    'CODE' => 'bcaa',
    'DETAIL_PICTURE' => ''
);
$arr = array_slice($arr, 0, 4);

print_r($arr);

<强>输出:

Array
(
    [ID] => 4
    [DATE_CREATE] => 04.10.2013 20:47:52
    [NAME] => BCAA
    [DEPTH_LEVEL] => 1
)

答案 3 :(得分:3)

使用unset()

unset($array['SEARCHABLE_CONTENT']);

这样就取消了你不需要的按键。

答案 4 :(得分:3)

只需使用array_slice函数,它就适合这种情况。

$sliced = array_slice($input, 0, 3);

答案 5 :(得分:2)

要通过键

从数组中删除一些值
  $someKey= array_search('someKey', $array);
    unset($array[$someKey]);

或只是

 unset($array[$someKey])

例如:

unset($array['DESCRIPTION']);
unset($array['SEARCHABLE_CONTENT'];

或者在你的情况下

$result = array_slice($input, 0, 3);

答案 6 :(得分:1)

如果要定义要删除的键,可以使用:

$array = array('foo' => 'bar', 'hello' => 'world', 'blue' => 'psyduck', 'abc' => 'def');
$reducedArray = array_diff_key($array, array_flip(array('blue', 'abc')));

如果要定义要保留的密钥,可以使用:

$array = array('foo' => 'bar', 'hello' => 'world', 'blue' => 'psyduck', 'abc' => 'def');
$reducedArray = array_intersect_key($array, array_flip(array('foo', 'hello')));

在两个示例中,结果数组为:

var_dump($reducedArray);
// array(2) { ["foo"]=> string(3) "bar" ["hello"]=> string(5) "world" }