计算数组

时间:2016-04-07 15:33:37

标签: php arrays count predicate

我有这个数组:

Array
(
    [boks_1] => Array
        (
            [tittel] => Test
            [innhold] =>      This is a test text
            [publish] => 2
        )

    [boks_2] => Array
        (
            [tittel] => Test 3
            [innhold] => This is a text test
            [publish] => 1
        )

    [boks_3] => Array
        (
            [tittel] => Kontakt oss
            [innhold] => This is a test text
            [publish] => 1
        )
)

如何使用PHP count()来计算我的数组中[publish] => 1出现的次数?我将使用该值来控制flexbox容器中divs的宽度。

3 个答案:

答案 0 :(得分:6)

为了好玩:

$count = array_count_values(array_column($array, 'publish'))[1];
  • 获取publish键数组
  • 计算值
  • 使用索引1
  • 获取[1]的计数

O.K。更有趣:

$count = count(array_keys(array_column($array, 'publish'), 1));
  • 获取publish键数组
  • 获取值为1
  • 的数组键
  • 计算数组

注意:您可能希望将true作为第三个参数传递给array_keys(),以便更准确并使用'1'代替1如果1是字符串而不是整数。

答案 1 :(得分:3)

$newArray = array_filter($booksArray, function($bookDet) { if($bookDet["publish"]==1) { return $bookDet; } });
$getCount = count($newArray);

使用array_filter过滤掉所需的数组详细信息,并计算它。

这可能是最简单的,也是性能导向的,因为它不会循环。

答案 2 :(得分:1)

这可以解决你的问题:

$array = array(); //This is your data sample

$counter = 0; //This is your counter
foreach ($array as $key => $elem) {
    if (array_key_exists('publish', $elem) && $elem['publish'] === 1) {
        $counter += $elem['publish'];
    }
}

希望这有帮助,