php count数组,其中内部值为true

时间:2014-11-19 12:33:09

标签: php arrays

我希望计算数组课程中具有内部值Completed => true的值。当我进行标准计数时,有两个值。我尝试过is_array和array_filter

count($employee['Course']

输出:2

Course(array)
    0(array)
        id:1
        name:Handling
        CoursesEmployee(array)
            id:1
            employee_id:1
            course_id:1
            completed(true)
     1(array)
         id:3
         name:Induction
         CoursesEmployee(array)
             id:2
             employee_id:1
             course_id:3
             completed(false)

2 个答案:

答案 0 :(得分:1)

如果您使用的是PHP 5.3或更高版本,则可以通过单个表达式完成:

count(
  array_filter(
    $employee['Course'], 
    function($item){return $item['CoursesEmployee']['completed'];} 
  )
)

查看array_filteranonymous functions上的文档。

答案 1 :(得分:1)

您还可以使用array_reduce,它可以将数组研磨成单个结果。

array_reduce( $employee['Course'], function( $carry, $item ) { 
  return $carry + (bool)$item['CoursesEmployee']['completed'] ) { 
}, 0 );

使用布尔值的int值为0表示false或1表示true。

文档:http://php.net/manual/en/function.array-reduce.php