0
function remove_values($arr){
    $_a = array();
    while(list($key,$val) = each($arr)){
        $_a[$val] = 1;
    }
    return array_keys($_a);
}

我不能很好地遵循上述功能。我不知道有什么效果 $_a[$val] = 1; 任何人都可以向我解释一下谢谢

4

4 回答 4

2

出于功能的目的,为什么不直接使用array_unique($array)

像这样

function remove_values($arr){
    return array_keys(array_unique($arr));
}

更新:

好的,既然你正在努力学习。这是帖子中功能的解释

function remove_values($arr){
    $_a = array(); //Creates a temporary array to store matching
    while(list($key,$val) = each($arr)){ //till their is item is array, loop it 
        $_a[$val] = 1; //Store in the temporary array with array's values as index, thus eliminating the duplicates
           //^ Here storing with the value as index IS THE KEY
    }
    return array_keys($_a); //return only the keys, which in fact are the unique values
}
于 2012-04-24T06:44:46.660 回答
0

实际上非常好的功能。

$_a[$val] = 1;

使每个元素都被签名一次,因此返回一次意味着删除重复项。比 array_keys($_a) 函数重建和排序数组。我喜欢它。

于 2012-04-24T06:45:22.570 回答
0

好吧,这一切就是将值插入到数组的键中。由于数组中的所有键都是唯一的,因此您将删除所有重复项。

array_keys()只需以普通形式返回该数组。

例子:

$arr = array('red', 'green', 'red');

$arr = remove_values($arr);

array( 'red' => 1,
       'green' => 1);

这导致

array('red', 'green');

因为“red”只能是一次键值。

于 2012-04-24T06:45:22.840 回答
0

它将值 1 分配给值部分。例如:

<?php

function remove_values($arr){
    $_a = array();

    while(list($key,$val) = each($arr)){
        $_a[$val] = 1;

    }
    print_r($_a);
    return array_keys($_a);
}

$arr = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
$sed = remove_values($arr);
print_r($sed);
?>

它返回两个数组值:

Array
(
    [apple] => 1
    [banana] => 1
    [cranberry] => 1
)
Array
(
    [0] => apple
    [1] => banana
    [2] => cranberry
)

现在您很容易理解值“1”的影响。

于 2012-04-24T07:16:26.653 回答