我有一个PHP数组,如下所示:
Index Key Value
[0] 1 Awaiting for Confirmation
[1] 2 Assigned
[2] 3 In Progress
[3] 4 Completed
[4] 5 Mark As Spam
当我对数组值执行var_dump操作时,得到的结果如下:
array(5) { [0]=> array(2) { ["key"]=> string(1) "1" ["value"]=> string(25) "Awaiting for Confirmation" } [1]=> array(2) { ["key"]=> string(1) "2" ["value"]=> string(9) "Assigned" } [2]=> array(2) { ["key"]=> string(1) "3" ["value"]=> string(11) "In Progress" } [3]=> array(2) { ["key"]=> string(1) "4" ["value"]=> string(9) "Completed" } [4]=> array(2) { ["key"]=> string(1) "5" ["value"]=> string(12) "Mark As Spam" } }
我想删除垃圾邮件完成和标记为垃圾邮件。我知道我可以unset[$array[3],$array[4])
,但问题是有时索引号可能会不同。
有没有一种方法可以通过匹配值名而不是键值来删除它们?
发布于 2011-03-27 23:19:49
您的数组非常奇怪:为什么不直接使用key
value
作为索引,使用作为索引...值?
如果你的数组是这样声明的,不是更容易吗:
$array = array(
1 => 'Awaiting for Confirmation',
2 => 'Asssigned',
3 => 'In Progress',
4 => 'Completed',
5 => 'Mark As Spam',
);
这将允许您使用key
的值作为索引来访问数组……
您还可以使用函数来搜索值,例如:
$indexCompleted = array_search('Completed', $array);
unset($array[$indexCompleted]);
$indexSpam = array_search('Mark As Spam', $array);
unset($array[$indexSpam]);
var_dump($array);
比你的数组更简单,不是吗?
取而代之的是,你的数组看起来像这样:
$array = array(
array('key' => 1, 'value' => 'Awaiting for Confirmation'),
array('key' => 2, 'value' => 'Asssigned'),
array('key' => 3, 'value' => 'In Progress'),
array('key' => 4, 'value' => 'Completed'),
array('key' => 5, 'value' => 'Mark As Spam'),
);
您必须遍历所有项目,分析value
,并取消设置正确的项目:
foreach ($array as $index => $data) {
if ($data['value'] == 'Completed' || $data['value'] == 'Mark As Spam') {
unset($array[$index]);
}
}
var_dump($array);
即使可行,也不是那么简单...我坚持认为:您不能更改数组的格式,以使用更简单的键/值系统吗?
发布于 2012-06-23 09:10:47
...
$array = array(
1 => 'Awaiting for Confirmation',
2 => 'Asssigned',
3 => 'In Progress',
4 => 'Completed',
5 => 'Mark As Spam',
);
return array_values($array);
...
发布于 2011-03-27 23:19:41
$key = array_search("Mark As Spam", $array);
unset($array[$key]);
对于二维数组...
$remove = array("Mark As Spam", "Completed");
foreach($arrays as $array){
foreach($array as $key => $value){
if(in_array($value, $remove)) unset($array[$key]);
}
}
https://stackoverflow.com/questions/5450148
复制相似问题