web-gelistirme-sc.com

PHP - belirli dizi değerlerini say

Bir dizideki element sayısını, sabite eşit olan nasıl sayabilirim?

$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");

içeride kaç tane "Ben" olduğunu nasıl bilebilirim?

36
Ivo San
$array = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");
$counts = array_count_values($array);
echo $counts['Ben'];
89
Rajat Singhal

Bunu array_keys ve count ile yapabilirsiniz.

$array = array("blue", "red", "green", "blue", "blue");
echo count(array_keys($array, "blue"));

Çıktı:

3
11
Oliver A.

array_count_values ​​ function işlevini kullanın.

$ countValues ​​= array_count_values ​​($ myArray);

echo $countValues["Ben"];

6
Rikesh

array_count_values() işlevini kullanın. Bu linki kontrol edin http://php.net/manual/en/function.array-count-values.php

5
swapnesh

array_count_values ​​() işlevini deneyin

<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>

çıktı:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

http://php.net/manual/tr/function.array-count-values.php

2
Doc

İki boyutlu dizi durumumda, PHP Resmi Sayfa yorumlarından, yararlı pasajı iki boyutlu dizi için

<?php

$list = [
  ['id' => 1, 'userId' => 5],
  ['id' => 2, 'userId' => 5],
  ['id' => 3, 'userId' => 6],
];
$userId = 5;

echo array_count_values(array_column($list, 'userId'))[$userId]; // outputs: 2
?>
1

Eğer TÜM dizideki aynı olayları saymak istiyorsanız, işte hepsini saymak ve sonuçları çok boyutlu bir dizi olarak döndürmek için bir işlev:

function countSame($array) {

$count = count($array);
$storeArray = array();
while ($count > 0) {
$count--;

if ($array[$count]) {
$a = $array[$count];
$counts = array_count_values($array);
$counts = $counts[$a];
$tempArray = array($a, $counts);
array_Push($storeArray, $tempArray);

$keys = array_keys($array, $a);
foreach ($keys as $k) {
unset($array[$k]);
} //end of foreach ($keys as $k)
} //end of if ($array[$count])

} //end of while ($count > 0)

return $storeArray;

} //end of function countSame($array)
0
frosty
define( 'SEARCH_STRING', 'Ben' );

$myArray = array("Kyle","Ben","Sue","Phil","Ben","Mary","Sue","Ben");

$count = count(array_filter($myArray,function($value){return SEARCH_STRING === $value;}));

echo $count, "\n";

Çıktı:

3
0
Leo

array_count_values sadece tamsayılar ve dizgiler için çalışır. Float/sayısal değerler için sayımlar istiyorsanız (ve hassasiyet veya gösterimdeki küçük değişikliklere dikkat etmezseniz), bu işe yarar: 

function arrayCountValues($arr) {
  $vals = [];
  foreach ($arr as $val) { array_Push($vals,strval($val)); }
  $cnts = array_count_values($vals);
  arsort($cnts);
  return $cnts;
}

Anahtarlarla $cnts döndürdüğüme dikkat edin. Onları geri dönüştürmek kolay olurdu, ancak değerler için mode belirlemeye çalışıyorum, bu yüzden yalnızca ilk (birkaç) değerleri yeniden dönüştürmem gerekiyor.

Döngü yapan, array_count_values kullanmak yerine bir sayım dizisi yaratan bir sürümü test ettim ve bu daha verimli olduğu ortaya çıktı (belki% 8-10 ile)!

0
dhc

PHP işlevini deneyin array_count_values .

0
nairbv