首先我要说的是,我已经调查过其他帖子但未能完成我的需求。我使用过array_unique($array)
但重复项不会被丢弃。这是使用var_dump:
{
[0]=>
string(12) "44.94.192.40"
}
array(1) {
[0]=>
string(12) "44.94.192.41"
}
array(1) {
[0]=>
string(9) "44.94.1.1"
}
array(1) {
[0]=>
string(9) "44.94.1.1"
}
array(1) {
[0]=>
string(13) "44.96.253.100"
}
“44.94.1.1”是一个副本,我希望删除,但我不能。这与我的数组结构有关吗?
答案 0 :(得分:0)
根据您的评论进行编辑:
来自array_unique()
上的documentation:
当且仅当
(string) $elem1 === (string) $elem2
时,才认为两个元素相等。用文字表示:当字符串表示相同时。
因此,每个值都是数组的事实是干扰。
尝试创建仅包含字符串值的数组:
$new_array = array();
foreach ($array as $value) {
$new_array[] = $value[0];
}
$new_array = array_unique($new_array);
答案 1 :(得分:0)
你可以使用foreach循环
$array = array(
array("44.94.192.40"),
array("44.94.192.41"),
array("44.94.1.1"),
array("44.94.1.1"),
array("44.96.253.100"),
);
$temp_arr=array();
foreach($array as $elementKey => $element)
{
foreach($element as $valueKey => $value)
{
if(in_array($value,$temp_arr)) unset($array[$elementKey]);
else $temp_arr[]=$value;
}
}
print_r($array);
输出将是:
Array ( [0] => Array ( [0] => 44.94.192.40 ) [1] => Array ( [0] => 44.94.192.41 ) [2] => Array ( [0] => 44.94.1.1 ) [4] => Array ( [0] => 44.96.253.100 ) )
答案 2 :(得分:0)
您可以展平数组并使数组唯一,或者通过引用外部数组执行array_map
<?php
$data = array(
array("44.94.192.40"),
array("44.94.192.41"),
array("44.94.1.1"),
array("44.94.1.1"),
array("44.96.253.100"),
);
$visited = array();
array_map(function($v) use ( &$visited ){
if(array_search( $v[0], $visited ) === false){
$visited[] = $v[0];
};
},$data);
var_dump($visited);
array(4) {
[0]=>
string(12) "44.94.192.40"
[1]=>
string(12) "44.94.192.41"
[2]=>
string(9) "44.94.1.1"
[3]=>
string(13) "44.96.253.100"
}
答案 3 :(得分:0)
您可以在用户评论中找到多种方法从array_unique的php doc页面上的多维数组中删除重复项
http://us3.php.net/array_unique
Orel还提到了一个重复的问题,一目了然也包含了做同样的功能 How to remove duplicate values from an array in PHP
为了简单起见,我已经为你选了一个,但根据你想要的确切内容,我链接的php页面上有很多不同的风格
foreach ($arrAddressList AS $key => $arrAddress) {
$arrAddressList[$key] = serialize($arrAddress);
}
$arrAddressList = array_unique($arrAdressList);
foreach ($arrAddressList AS $key => $strAddress) {
$arrAddressList[$key] = unserialize($strAddress);
}