2014-09-30 66 views
0

我有一個數組:獲取獨特的價值觀,沒有陣列功能計數

$arrData = array(3,5,5,8,7,6,3,1,2,8,9); 

不使用任何陣列defualt功能,我想獲取數組的個性化......

條件:

重複的數組值必須被視爲1值。

請提供你的邏輯,可以幫助找到我的答案,而不陣列功能...

在此先感謝...

+0

你嘗試過什麼?你的結果是什麼?什麼困擾你?在StackOverflow上發佈自己的任務,希望有人會爲你做這些任務沒有得到很好的考慮,你必須至少嘗試一下。 – personne3000 2014-09-30 06:00:15

+0

我們不做功課。 – 2014-09-30 06:00:40

+0

其實這是一個問題在採訪中問......我什至不知道..我試圖搜索,但每個人都使用的功能..所以我在這裏添加此問題... – DeDevelopers 2014-09-30 06:04:32

回答

5

如果你只是想獲得陣列的數量沒有重複,你可以做到這一點這種方式:

<?php 

$arrData = array(3, 5, 5, 8, 7, 6, 3, 1, 2, 8, 9); 
$out = array(); 

foreach ($arrData as $item) { 
    if (!in_array($item, $out)) { 
     $out[] = $item; 
    } 
} 


echo count ($out); 

如果你想知道OCCURENCES的數量,你可以這樣來做:

<?php 

$arrData = array(3,5,5,8,7,6,3,1,2,8,9); 

$out = array(); 

foreach ($arrData as $item) { 
    if (isset($out[$item])) { 
     ++$out[$item]; 
    } 
    else { 
     $out[$item] = 1; 
    } 
} 

foreach ($out as $item => $count) { 
    echo $item.' '.$count."<br />"; 
} 

echo count($out); 

您可以使用循環簡單地迭代每個元素,並使用第一個數組中的值和出現次數的值創建新數組。

+0

好友我需要總數在最後..重複將被視爲1值..所以計數我想要的結果將是:8 – DeDevelopers 2014-09-30 06:07:05

+0

感謝兄弟多數民衆贊成我想要的東西... – DeDevelopers 2014-09-30 06:09:14

+0

感謝它的工作正常 - @MarcinNabiałek – 2017-05-02 06:19:07

0

使用此PHP函數

$arrData = array(3,5,5,8,7,6,3,1,2,8,9); 
array_count_values($arrData); 
print_r($arrData); 

widtout函數默認dublicat數組值

$arrData = array(3, 5, 5, 8, 8, 7, 6, 3, 1, 2, 8, 9); 

    $i=0; 
    $valueArray=''; 
$newDublicatValue=array(); 
foreach($arrData as $key=>$value){ 

    if ($arrData[$key]==$valueArray){ 
     $newDublicatValue[]=$arrData[$key]; 
    } 
    $valueArray=$arrData[$key]; 

} 
print_r($newDublicatValue); 

或在陣列

$result = array_unique($arrData); 
print_r($result); 

widtout使用此功能刪除dublicate值功能de對於故障陣列dublicat價值

$arrData = array(3, 5, 5, 8, 8, 7, 6, 3, 1, 2, 8, 9); 

    $i=0; 
    $valueArray=''; 
$newDublicatValue=array(); 
foreach($arrData as $key=>$value){ 

    if ($arrData[$key]==$valueArray){ 
     unset($arrData[$i]); 
    } 
    $valueArray=$arrData[$i]; 
    $i++; 

} 
print_r($arrData); 
+0

「請提供你的邏輯,可以幫助找到我的答案沒有數組函數...「 – 2014-09-30 06:03:27

1

使用這樣的事情:

<?php 
    $arrData = array(3,5,5,8,7,6,3,1,2,8,9); 
    $tmpArray = array(); 

    $i = 0; 
    foreach($arrData as $k => $v) 
    { 
     if(!in_array($v, $tmpArray)) 
     { 
      $tmpArray[$k] = $v; 
      $i++; 
     } 
    } 

    echo "Unique array size is: ".$i; 
?> 

沒有in_array

<?php 
    $arrData = array(3,5,5,8,7,6,3,1,2,8,9); 
    $tmpArray = array(); 

    foreach($arrData as $k => $v) 
    { 
     $tmpArray[$k] = $v; 
    } 

    $i = 0; 
    foreach($tmpArray as $k => $v) 
    { 
     $i++; 
    } 

    echo "Unique array size is: ".$i; 
?> 
+0

謝謝你真的在工作..但如果我們不必使用in_array函數?我們仍然可以得到相同的結果@ S.Pols – DeDevelopers 2014-09-30 06:08:21

+1

當然,那麼你會得到這樣的想法。 (往上看) – 2014-09-30 06:10:28

1
<?php 
$arrData = array(3,5,5,8,7,6,3,1,2,8,9); 

foreach($arrData as $x){ 
    foreach($arrData as $y=>$t){ 
     if($x == $y){ 
      $array[$x] =0; 
     }else{ 
      $array[$x] =1; 

     } 
    } 
} 
$numCount =0; 
foreach($array as $q=>$r){ 
    $numCount +=1; 
} 
echo $numCount ; 
?> 
0
<?php 
    $arr1 = [1,1,2,3,4,5,6,3,1,3,5,3,20];  
    print_r(arr_unique($arr1)); // will print unique values 
    echo "<br>"; 
    echo "Unique value count => ".count(arr_unique($arr1)); // Will print unique value count 
    echo "<br>"; 
    arr_count_val($arr1); // will print array with duplicate values 

    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; 
    } 

    function arr_count_val($arr) { 
     $uni_array = arr_unique($arr); 
     $count = 0; 
     foreach($uni_array as $n1) { 
      foreach($arr as $n2) { 
       if($n1 == $n2) { 
        $count++; 
       } 
      } 
      echo "$n1"." => "."$count"."<br>"; 
      $count=0; 
     } 
    } 
?>