जवाबों:
Array_unique () का उपयोग करें ।
उदाहरण:
$array = array(1, 2, 2, 3);
$array = array_unique($array); // Array is now (1, 2, 3)
$array = array_unique($array, SORT_REGULAR);
उपयोग array_values(array_unique($array));
array_unique
: अद्वितीय सरणी के लिए
array_values
: reindexing के लिए
array_unique
कुंजी और मान जोड़े के साथ एक वस्तु देता है और array_values
एक सरणी के रूप में केवल मान लौटाता है।
//Find duplicates
$arr = array(
'unique',
'duplicate',
'distinct',
'justone',
'three3',
'duplicate',
'three3',
'three3',
'onlyone'
);
$unique = array_unique($arr);
$dupes = array_diff_key( $arr, $unique );
// array( 5=>'duplicate', 6=>'three3' 7=>'three3' )
// count duplicates
array_count_values($dupes); // array( 'duplicate'=>1, 'three3'=>2 )
केवल एक चीज जो मेरे लिए काम करती है:
$array = array_unique($array, SORT_REGULAR);
संपादित करें: SORT_REGULAR
मूल सरणी का एक ही क्रम रखता है।
$result = array();
foreach ($array as $key => $value){
if(!in_array($value, $result))
$result[$key]=$value;
}
कभी-कभी array_unique()
ऐसा नहीं होता है, यदि आप चाहते हैं कि अद्वितीय और डुप्लिकेट आइटम मिलें ...
$unique=array("","A1","","A2","","A1","");
$duplicated=array();
foreach($unique as $k=>$v) {
if( ($kt=array_search($v,$unique))!==false and $k!=$kt )
{ unset($unique[$kt]); $duplicated[]=$v; }
}
sort($unique); // optional
sort($duplicated); // optional
पर परिणाम
array ( 0 => '', 1 => 'A1', 2 => 'A2', ) /* $unique */
array ( 0 => '', 1 => '', 2 => '', 3 => 'A1', ) /* $duplicated */
इस प्रकार के एरे को बनाने के लिए हम इस अंतिम मान को कॉलम या की वैल्यू में अपडेट करेंगे और एरे से यूनीक वैल्यू प्राप्त करेंगे ...
$array = array (1,3,4,2,1,7,4,9,7,5,9);
$data=array();
foreach($array as $value ){
$data[$value]= $value;
}
array_keys($data);
OR
array_values($data);
explode(",", implode(",", array_unique(explode(",", $YOUR_ARRAY))));
यह प्रमुख संघों का ख्याल रखेगा और परिणामी नई सरणी के लिए कुंजियों को क्रमबद्ध करेगा :-)
explode("," $YOUR_ARRAY)
जब $YOUR_ARRAY
है array("1", "2", "3")
?
आपके सरणी के आकार के आधार पर, मैंने पाया है
$array = array_values( array_flip( array_flip( $array ) ) );
array_unique से अधिक तेज हो सकता है।
यह एक शानदार तरीका है। यह सुनिश्चित करना चाहते हैं कि इसका उत्पादन फिर से एक सरणी है। अब आप केवल अंतिम अनन्य मान दिखा रहे हैं।
इसे इस्तेमाल करे:
$arrDuplicate = array ("","",1,3,"",5);
foreach (array_unique($arrDuplicate) as $v){
if($v != "") { $arrRemoved[] = $v; }
}
print_r ($arrRemoved);
if (@!in_array($classified->category,$arr)){
$arr[] = $classified->category;
?>
<?php } endwhile; wp_reset_query(); ?>
पहली बार एरे में मूल्य की जाँच करें और उसी मान को अनदेखा करें
PHP में एक साहचर्य सरणी से डुप्लिकेट मान निकालें।
$arrDup = Array ('0' => 'aaa-aaa' , 'SKU' => 'aaa-aaa' , '1' => '12/1/1' , 'date' => '12/1/1' , '2' => '1.15' , 'cost' => '1.15' );
foreach($arrDup as $k => $v){
if(!( isset ($hold[$v])))
$hold[$v]=1;
else
unset($arrDup[$k]);
}
ऐरे ([०] => आ-आ [१] => १२/१/१ [२] => १.१५)
इन्हें करने के कई तरीके हो सकते हैं, जो इस प्रकार हैं
//first method
$filter = array_map("unserialize", array_unique(array_map("serialize", $arr)));
//second method
$array = array_unique($arr, SORT_REGULAR);
यदि आपको प्रदर्शन में चिंता है और सरल सरणी है, तो उपयोग करें:
array_keys(array_flip($array));
यह array_unique से कई गुना तेज है।
$a = array(1, 2, 3, 4);
$b = array(1, 6, 5, 2, 9);
$c = array_merge($a, $b);
$unique = array_keys(array_flip($c));
print_r($unique);
$arrDuplicate = array ("","",1,3,"",5);
foreach(array_unique($arrDuplicate) as $v){
if($v != "" ){$arrRemoved = $v; }}
print_r($arrRemoved);
function arrayUnique($myArray)
{
$newArray = Array();
if (is_array($myArray))
{
foreach($myArray as $key=>$val)
{
if (is_array($val))
{
$val2 = arrayUnique($val);
}
else
{
$val2 = $val;
$newArray=array_unique($myArray);
$newArray=deleteEmpty($newArray);
break;
}
if (!empty($val2))
{
$newArray[$key] = $val2;
}
}
}
return ($newArray);
}
function deleteEmpty($myArray)
{
$retArray= Array();
foreach($myArray as $key=>$val)
{
if (($key<>"") && ($val<>""))
{
$retArray[$key] = $val;
}
}
return $retArray;
}
इस छोटे और मीठे कोड की कोशिश करें -
$array = array (1,4,2,1,7,4,9,7,5,9);
$unique = array();
foreach($array as $v){
isset($k[$v]) || ($k[$v]=1) && $unique[] = $v;
}
var_dump($unique);
आउटपुट -
array(6) {
[0]=>
int(1)
[1]=>
int(4)
[2]=>
int(2)
[3]=>
int(7)
[4]=>
int(9)
[5]=>
int(5)
}
if
।
<?php
$arr1 = [1,1,2,3,4,5,6,3,1,3,5,3,20];
print_r(arr_unique($arr1));
function arr_unique($arr) {
sort($arr);
$curr = $arr[0];
$uni_arr[] = $arr[0];
for($i=0; $i<count($arr);$i++){
if($curr != $arr[$i]) {
$uni_arr[] = $arr[$i];
$curr = $arr[$i];
}
}
return $uni_arr;
}
यहाँ मैंने एक दूसरी खाली सरणी बनाई है और for
पहले सरणी के साथ लूप का उपयोग किया है जो डुप्लिकेट कर रहा है। यह पहली सरणी की गिनती के रूप में कई बार चलेगा। फिर पहले सरणी के साथ सरणी की स्थिति के साथ तुलना की और मिलान किया कि इसका यह आइटम पहले से है या उपयोग करके नहीं in_array
। यदि नहीं, तो यह उस आइटम को दूसरी सरणी में जोड़ देगा array_push
।
$a = array(1,2,3,1,3,4,5);
$count = count($a);
$b = [];
for($i=0; $i<$count; $i++){
if(!in_array($a[$i], $b)){
array_push($b, $a[$i]);
}
}
print_r ($b);
foreach
लूप का उपयोग क्यों नहीं करते हैं ?
foreach
लूप के लिए बहुत आरामदायक होने के कारण उपयोग नहीं किया । बस।
यह फ़ंक्शन के माध्यम से किया जा सकता है मैंने तीन फ़ंक्शन डुप्लिकेट को उन मानों को रिटर्न किया है जो सरणी में डुप्लिकेट हैं।
दूसरा फ़ंक्शन सिंगल रिटर्न केवल उन मानों को जो एकल माध्य को सरणी में दोहराया नहीं जाता है और तीसरा और पूर्ण फ़ंक्शन सभी मानों को लौटाता है लेकिन डुप्लिकेट नहीं किया जाता है यदि कोई मूल्य डुप्लिकेट है तो इसे एकल में बदल दें;
function duplicate($arr) {
$duplicate;
$count = array_count_values($arr);
foreach($arr as $key => $value) {
if ($count[$value] > 1) {
$duplicate[$value] = $value;
}
}
return $duplicate;
}
function single($arr) {
$single;
$count = array_count_values($arr);
foreach($arr as $key => $value) {
if ($count[$value] == 1) {
$single[$value] = $value;
}
}
return $single;
}
function full($arr, $arry) {
$full = $arr + $arry;
sort($full);
return $full;
}
Array_unique () फ़ंक्शन के लिए एक विकल्प ।।
जानवर बल एल्गोरिथ्म का उपयोग करना
// [1] डुप्लिकेट आइटम के साथ यह हमारी सरणी है
$ मैच = ["जॉर्ज", "मेल्विन", "चेल्सी", "मेल्विन", "जॉर्ज", "स्मिथ"];
// [२] बिना किसी डुप्लिकेट आइटम के नए सरणी के लिए कंटेनर
$ गिरफ्तारी = [];
// [3] डुप्लिकेट किए गए सरणी की लंबाई प्राप्त करें और इसे लूप के लिए उपयोग किए जाने वाले var लेन पर सेट करें
$ लेन = गिनती ($ मैच);
// [४] यदि मिलान कुंजी ($ i) करंट लूप Iteration में उपलब्ध नहीं है // [4] सरणी $ गिरफ्तार तो मैचों के वर्तमान पुनरावृत्ति कुंजी मूल्य को धक्का [$ मैं] // [४] एरे गिरफ्तार करने के लिए।
$ मैं, ($ i = 0 के लिए
if(array_search($matches[$i], $arr) === false){ array_push($arr,$matches[$i]); } } //print the array $arr. print_r($arr); //Result: Array ( [0] => jorge [1] => melvin [2] => chelsy [3] => smith )
मैंने बिना किसी फ़ंक्शन का उपयोग किए यह किया है।
$arr = array("1", "2", "3", "4", "5", "4", "2", "1");
$len = count($arr);
for ($i = 0; $i < $len; $i++) {
$temp = $arr[$i];
$j = $i;
for ($k = 0; $k < $len; $k++) {
if ($k != $j) {
if ($temp == $arr[$k]) {
echo $temp."<br>";
$arr[$k]=" ";
}
}
}
}
for ($i = 0; $i < $len; $i++) {
echo $arr[$i] . " <br><br>";
}
Note that array_unique() is not intended to work on multi dimensional arrays.