刪除數組與二維數組值的php代碼_PHP教程

來源:互聯網
上載者:User
方法如下:
$arr = array(…………) ;//假設有一萬個元素的數組,裡面有重複的元素。
$arr = array_flip(array_flip($arr)); //這樣便可以重複資料刪除元素。

究竟是怎麼回事呢?來看下array_flip()的作用:array_flip()用於將一個數組的每個元素的鍵和值交換,如:
$arr1 = array (”age” => 30, “name” => “快樂園”);
$arr2 = array_flip($arr1); //$arr2 就是 array(30 => “age”, “快樂園” => “name”);
在PHP的數組中,允許不同的元素可以取同一個值,但不允許同一個鍵名被不同的元素使用,如:
$arr1 = array (”age” => 30, “name” => “快樂園”, “age” => 20); “age” => 20將會取代”age” => 30
$arr1 = array (”name” => “快樂園”, “age” => 45);
這裡 $arr1與$arr2 是相等的。
於是,我們便可以知道,為什麼 array_flip(array_flip($arr)) 可以刪除數組中重複的元素了。首先,$arr裡的值會變成鍵名,因為值是有重複的,變成鍵名之後這些重複的值便成了重複的鍵名,PHP引擎將重複的鍵名刪除,只保留最後一個。如:
$arr1 = array (”age” => 30, “name” => “快樂園”, “age” => 20);
$arr1 = array_flip($arr1); //$arr1 變成了 array(”快樂園” => “name”, 20 => “age”);
//再把 $arr1 的鍵名與值還複:
$arr1 = array_flip($arr1);

上面的代碼寫得簡潔一些就是: $arr1 = array_flip(array_flip($arr1));

上面寫了一篇關於數組去重的文章,但是僅限於一維數組。下面的函數可以用於二維數組:
複製代碼 代碼如下:
//二維數組去掉重複值

function array_unique_fb($array2D)
{
foreach ($array2D as $v)
{
$v = join(",",$v); //降維,也可以用implode,將一維數群組轉換為用逗號串連的字串
$temp[] = $v;
}
$temp = array_unique($temp); //去掉重複的字串,也就是重複的一維數組
foreach ($temp as $k => $v)
{
$temp[$k] = explode(",",$v); //再將拆開的數組重新組裝
}
return $temp;
}

如果你想保留數組的索引值,可以用下面的函數:
複製代碼 代碼如下:
//二維數組去掉重複值 並保留索引值

function array_unique_fb($array2D)
{
foreach ($array2D as $k=>$v)
{
$v = join(",",$v); //降維,也可以用implode,將一維數群組轉換為用逗號串連的字串
$temp[$k] = $v;
}
$temp = array_unique($temp); //去掉重複的字串,也就是重複的一維數組
foreach ($temp as $k => $v)
{
$array=explode(",",$v); //再將拆開的數組重新組裝
$temp2[$k]["id"] =$array[0];
$temp2[$k]["litpic"] =$array[1];
$temp2[$k]["title"] =$array[2];
$temp2[$k]["address"] =$array[3];
$temp2[$k]["starttime"] =$array[4];
$temp2[$k]["endtime"] =$array[5];
$temp2[$k]["classid"] =$array[6];
$temp2[$k]["ename"] =$array[7];
}
return $temp2;
}

大概就這樣啦。
二維數組去重
複製代碼 代碼如下:

$arr = array(
array('id' => 1,'name' => 'aaa'),
array('id' => 2,'name' => 'bbb'),
array('id' => 3,'name' => 'ccc'),
array('id' => 4,'name' => 'ddd'),
array('id' => 5,'name' => 'ccc'),
array('id' => 6,'name' => 'aaa'),
array('id' => 7,'name' => 'bbb'),
);
function assoc_unique(&$arr, $key)
{
$rAr=array();
for($i=0;$i{
if(!isset($rAr[$arr[$i][$key]]))
{
$rAr[$arr[$i][$key]]=$arr[$i];
}
}
$arr=array_values($rAr);
}
assoc_unique(&$arr,'name');
print_r($arr);
?>


利用php內建函數

說明


array array_unique ( array $array )
array_unique() 接受 array 作為輸入並返回沒有重複值的新數組。

注意鍵名保留不變。array_unique() 先將值作為字串排序,然後對每個值只保留第一個遇到的鍵名,接著忽略所有後面的鍵名。這並不意味著在未排序的 array 中同一個值的第一個出現的鍵名會被保留。

Note: 若且唯若 (string) $elem1 === (string) $elem2 時兩個單元被認為相同。就是說,當字串的表達一樣時。第一個單元將被保留。


Example #1 array_unique() 例子

$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>
上例將輸出:

Array
(
[a] => green
[0] => red
[1] => blue
)


Example #2 array_unique() 和類型

$input = array(4, "4", "3", 4, 3, "3");
$result = array_unique($input);
var_dump($result);
?>
上例將輸出:

array(2) {
[0] => int(4)
[2] => string(1) "3"
}

相關教程
http://www.bKjia.c0m/phper/php-function/34794.htm

http://www.bkjia.com/PHPjc/632275.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632275.htmlTechArticle方法如下: $arr = array() ;//假設有一萬個元素的數組,裡面有重複的元素。 $arr = array_flip(array_flip($arr)); //這樣便可以重複資料刪除元素。 究竟是...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.