我有一个看起来像这样的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]),但是问题是有时索引号可能会不同。
是否可以通过匹配值名称而不是键值来删除它们?
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您的数组很奇怪:为什么不只使用keyas索引,以及valueas ...值?
如果这样声明数组,会不会容易得多:
$array = array( 1 => 'Awaiting for Confirmation', 2 => 'Asssigned', 3 => 'In Progress', 4 => 'Completed', 5 => 'Mark As Spam', ); 那将允许您使用keyas 的值作为索引来访问数组。
而且您可以使用函数来搜索值,例如array_search():"
$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); 即使可行,也不是那么简单...而且我坚持:您是否可以更改数组的格式,以使用更简单的键/值系统?"