你能告诉我你从数组中删除一个项目的方法吗?你认为这很好吗?在PHP中删除数组项目的最佳方法是什么?
回答
这取决于:
$a1 = array('a' => 1, 'b' => 2, 'c' => 3);
unset($a1['b']);
// array('a' => 1, 'c' => 3)
$a2 = array(1, 2, 3);
unset($a2[1]);
// array(0 => 1, 2 => 3)
// note the missing index 1
// solution 1 for numeric arrays
$a3 = array(1, 2, 3);
array_splice($a3, 1, 1);
// array(0 => 1, 1 => 3)
// index is now continous
// solution 2 for numeric arrays
$a4 = array(1, 2, 3);
unset($a4[1]);
$a4 = array_values($a4);
// array(0 => 1, 1 => 3)
// index is now continous
一般unset()
是哈希表(字符串索引的数组)的安全,但如果你要依靠连续的数字指标,你将不得不使用任何array_splice()
或unset()
组合和array_values()
。
的常用方法:
按照manual
unset($arr[5]); // This removes the element from the array
的过滤方式:
也有array_filter()功能照顾滤波阵列
$numeric_data = array_filter($data, "is_numeric");
为了得到一个顺序索引可以使用
$numeric_data = array_values($numeric_data);
彼得,谢谢。 – lovespring 2009-11-17 17:05:45
这要看情况。如果希望在不索引造成的差距,除去一个元素,你需要使用array_splice:
$a = array('a','b','c', 'd');
array_splice($a, 2, 1);
var_dump($a);
输出:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
使用未设置可以工作,但是这将导致非连续索引。这有时可能是一个问题,当你使用count($ A)迭代这个数组 - 1作为上限的量度:
$a = array('a','b','c', 'd');
unset($a[2]);
var_dump($a);
输出:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[3]=>
string(1) "d"
}
正如所看到的,计数现在是3,但最后一个元素的索引也是3.
因此,我的建议是使用array_splice用于具有数字索引的数组,并且仅对非数字索引的数组(真正的字典)使用unset。
或者你可以调用'unset($ a [2]); $ a = array_values($ a);' – nickf 2009-11-17 11:01:11
- 1. 在Java中删除数组中重复项的最佳方法是什么?
- 2. 从数组中删除数组的值的最佳方法是什么?
- 3. 将Bootstrap包含在项目中的最佳方法是什么?
- 4. 从数组中删除第一个元素的最佳方法是什么?
- 5. 从NSString中删除路径的最佳方法是什么?
- 6. 在php中乘数组的最佳方式是什么?
- 7. 什么是删除模型对象数组的最快方法?
- 8. 在CursorAdapter中删除一行的最佳方式是什么?
- 9. 在MVC中删除图像的最佳方式是什么?
- 10. 从数组中删除项目的最有效方法?
- 11. 什么是删除警告的最佳方法?
- 12. 用jQuery删除表格行的最佳方法是什么?
- 13. 删除部分字符串的最佳方法是什么? (C#)
- 14. 删除超过100,000个文件的最佳方法是什么?
- 15. 什么是删除布局元素的最佳方法
- 16. 删除duplicateMovieClip的最佳方法是什么?
- 17. 处理“所有组合”项目的最佳方式是什么?
- 18. 组织网址项目的最佳方式是什么?
- 19. 组织C#项目的最佳方式是什么?
- 20. 删除地图中的一组条目的最佳方法
- 21. 根据项目属性值在数组中找到某些项目的最佳方法是什么?
- 22. 从Python字典中删除项目的最佳方法?
- 23. 什么是备份Xcode项目的最佳方法
- 24. 将SOLR用于Web项目的最佳方法是什么?
- 25. 什么是以编程方式删除大型数据库的最佳方法
- 26. 从列表中删除第一个项目的最快方法是什么?
- 27. 在PHP中获取最后添加的数组项的关键字的最佳方法是什么?
- 28. 删除PHP数组中项目的.htm
- 29. 从JavaScript中的数组中删除元素的最佳方法?
- 30. Javascript中删除html表格的最佳方式是什么?
为什么要使用unset与array_values结合使用而不是array_splice? – John 2009-11-19 09:21:41
@John:我想到的一种情况是,当你想从一个数组中删除多个项目。使用'unset()' - 你可以删除这些值而不必考虑改变键 - 如果你已经完成了,你可以通过'array_values()'运行数组来标准化索引。这比使用'array_splice()'多次更干净更快。 – 2009-11-19 14:15:11