gpt4 book ai didi

PHP从关联数组中删除元素

转载 作者:IT老高 更新时间:2023-10-28 11:52:23 26 4
gpt4 key购买 nike

我有一个看起来像这样的 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]),但问题是有时索引号可能不同。

有没有办法通过匹配值名称而不是键值来删除它们?

最佳答案

你的数组很奇怪:为什么不直接使用 key 作为索引,而 value 作为...值?

如果你的数组是这样声明的,会不会容易很多:

$array = array(
1 => 'Awaiting for Confirmation',
2 => 'Asssigned',
3 => 'In Progress',
4 => 'Completed',
5 => 'Mark As Spam',
);

这将允许您使用 key 的值作为索引来访问数组...

您还可以使用函数来搜索值,例如 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);

即使可行,它也不是那么简单......我坚持:你能不能不改变数组的格式,以使用更简单的键/值系统?

关于PHP从关联数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com