例如有这样一个数组:
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
)
提前致谢。
答案 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)
答案 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" }