我有一个PHP数组的关联数组,格式如下:
array(1) {
[0]=>
{ ["name"]=> "Steve Jobs"
["email"]=> "steve@gmail.com" }
}
我对PHP很新,但我想要做的是搜索特定的电子邮件,如果找到,则从数组中删除该特定数组(名称和电子邮件对)(不会留下空白空间)已移除对象的数组。)
我在这里找到了这个代码,它搜索一个条目但返回一个数组。我如何修改它以删除找到的数组?
function search($array, $key, $value)
{
$results = array();
if (is_array($array))
{
if (isset($array[$key]) && $array[$key] == $value)
$results[] = $array;
foreach ($array as $subarray)
$results = array_merge($results, search($subarray, $key, $value));
}
return $results;
}
答案 0 :(得分:3)
这样的东西?
function delete_user(&$arr, $name){
for($i = count($arr)-1; $i >= 0; $i--){
if($arr[$i]["name"] == $name){
unset($arr[$i]);
}
}
}
&$arr
告诉PHP通过引用传递数组,因此可以从函数中修改它,否则它将被传递值。
答案 1 :(得分:0)
您必须使用unset删除元素,并使用in_array或array_search方法从数组中搜索元素。
unset($array[0]);
PHP手册(array_search)
中的示例function array_key_index(&$arr, $key) {
$i = 0;
foreach(array_keys($arr) as $k) {
if($k == $key) return $i;
$i++;
}
}
答案 2 :(得分:0)
我认为 raser 的答案存在一个小问题。我试着评论它,但我不能,因为我没有50的声誉。
如果您同意,请告诉我:count($arr)
返回数组中元素的数量。他正在使用递减的for
循环,除了数组的索引从0
开始并且他的循环在它到达0
之前结束,因此从不搜索数组的第一个元素。我相信正确的代码会是这样的:
function delete_user(&$arr, $name){
for($i = count($arr) - 1; $i >= 0; $i--){
if($arr[$i]["name"] == $name){
unset($arr[$i]);
}
}
}
谢谢!
答案 3 :(得分:-3)
刚找到数组索引,
未设置(阵列(键));
这不会显示该数组