【发布时间】:2012-03-29 00:27:52
【问题描述】:
我有一个这样的数组:
array() {
["AG12345"]=>
array() {
}
["AG12548"]=>
array() {
}
["VP123"]=>
array() {
}
我只需要保留键以“VP”开头的数组
一个函数就可以做到吗?
【问题讨论】:
我有一个这样的数组:
array() {
["AG12345"]=>
array() {
}
["AG12548"]=>
array() {
}
["VP123"]=>
array() {
}
我只需要保留键以“VP”开头的数组
一个函数就可以做到吗?
【问题讨论】:
是的,只需使用unset():
foreach ($array as $key=>$value)
{
if(substr($key,0,2)!=="VP")
{
unset($array[$key]);
}
}
【讨论】:
substr() 而不是正则表达式。它更简单、更快捷。
substr($key,0,2)!=="VP" 检查由字符串$key 的前两个字符组成的子字符串是否与字符串"VP" 相同。换句话说,! 代表否定。
来自上一个问题:How to delete object from array inside foreach loop?
foreach($array as $elementKey => $element) {
if(strpos($elementKey, "VP") == 0){
//delete this particular object from the $array
unset($array[$elementKey]);
}
}
【讨论】:
这对我有用:
$prefix = 'VP';
for ($i=0; $i <= count($arr); $i++) {
if (strpos($arr[$i], $prefix) !== 0)
unset($arr[$i]);
}
【讨论】:
另一种选择(如果它是值,这将更简单):
array_intersect_key($arr, array_flip(preg_grep('~^VP~', array_keys($arr))));
【讨论】:
这只是一个示例,您可能还有很多其他方法!
// sample array
$alpha = array("AG12345"=>"AG12345", "VP12548"=>"VP12548");
foreach($alpha as $val)
{
$arr2 = str_split($val, 2);
if ($arr2[0] == "VP")
$new_array = array($arr2[0]=>"your_values");
}
【讨论】: