A. php性能更好的去重和是否存在
去重
很多時候操作數組去重,一般使用array_unique()函數,但是在大數組的情況下運行地慢一些
更好的方式:
//把數組的鍵值交換過來,因為數組的健不能重復,就實現了去重
$array = array('a', 'b', 'c', 'a', 'd');
$array = array_flip($array);
//修復數組鍵值序列
$array = array_keys($array)
//再把數組的鍵值交換回來
$array = array_flip($array);
判斷是否存在
一般情況下判斷一個值是否已在在數組中in_array(), in_array()性能不太好
更好的方式
$array = array('a', 'b', 'c', 'd');
if (isset(array_flip($array)['a'])){
};
B. php中怎麼為字元串去重
先拿explode函數轉換為數組
然後使用array_unique去重復
最後,再用join組合成原來的字元串
C. php無序字元串怎麼去除重復
可以講其中一個字元中滴每個字元與另外一個字元對比,如果存在就不保留,如果不存在就保留;具體方法將a字元分解成字元串數組,然後循環對比;
D. php數組去重方法
array_unique()韓順可以去除數組中存在的具有相同值的元素,具體你可以自己試驗下
<?php
$input=array("a"=>"green","","red","b"=>"green","","blue","red","c"=>"witer","hello","witer");//假設一個數組
$result=array_unique($input);//去除其中值相同的元素
print_r($result);
?>
E. php 多個一維關聯數組去重
因為不太了解你其他業務,這里通過對多個數組觀察發現,他們的鍵名都是一致的。所以有2個簡單的辦法
(1)先翻轉一維數組,然後進行合並,再翻轉回來
這里就不寫詳細代碼,寫下簡單過程
$array_a =array_flip($array_a);
這樣交換後的數組內容如下
Array
(
[DHL] =>carrier
)
Array
(
[HKPT] =>carrier
)
....
合並數組,使用array_merge,數組中有相同的字元串鍵名,則該鍵名後面的值將覆蓋前一個值
$mergeArray = array_merge($array_a,$array_b,$array_c...);
這樣得到一個數組,裡面的元素都是鍵名不重復的,內容如下
Array
(
[DHL] =>carrier
[HKPT] =>carrier
....
)
還原數組,這里如果要完全打散成一個一個的一維數組,就直接array_shift,同時翻轉回來
$array_a =array_shift($mergeArray);$array_a =array_flip($array_a);
$array_b =array_shift($mergeArray);$array_b=array_flip($array_b);
...
這里一個一個執行可以用for循環替代,數組中有多少個元素就執行多少次,
(2)最簡單的辦法,只從你提供的例子來說,鍵名都一樣,直接先去掉鍵名,然後組合成一個數字索引的數組,直接array-unique,再把鍵名放回去
如果有不清楚可以發消息
F. php二維數組去重
方法一:
//二維數組去掉重復值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]['title'] =$array[1]; $temp2[$k]['keywords'] =$array[2]; $temp2[$k]['content'] =$array[3]; } return $temp2;}
G. php 二維數組值去重~
$a =
array(
array(a,b,c),
array(b,d,e),
array(a,e,f)
)
print_r(array(array_diff($a[0],$a[1],$a[2]),array_diff($a[1],$a[2]),$a[2]));
輸出來的就是你要的答案
H. php數組去除重復的值
之前寫了一篇關於數組去重的文章,但是僅限於一維數組。下面的函數可以用於二維數組:
//二維數組去掉重復值
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];
大概就這樣啦。
以上回答你滿意么?
I. php數組怎麼去除重復的數組值
array_unique() 函數定義和用法
移除數組中的重復的值,並返回結果數組。
當幾個數組元素的值相等時,只保留第一個元素,其他的元素被刪除。
返回的數組中鍵名不變。
<?php
$a=array("a"=>"XX","b"=>"D","c"=>"XX");
print_r(array_unique($a));
?>
輸出:Array ( [a] => XX [b] => D)
J. php數組去重 現在我有一個這樣的數組
$new=array();
foreach($arrayas$val){
$new[]=$val['treat_method'];
}
$new=array_flip(array_flip($new));
var_mp($new);
應該會顯示
array('手術,西醫葯物','手術','西醫葯物');