从不同类型的数组中获取值

I've an array

Array
(
    [activity] => Array
        (
            [0] => Array
                (
                    [action] => open
                    [timestamp] => 2019-08-02T21:34:03+00:00
                )

            [1] => Array
                (
                    [action] => open
                    [timestamp] => 2019-08-02T20:27:54+00:00
                )

            [2] => Array
                (
                    [action] => click
                    [timestamp] => 2019-08-02T20:27:54+00:00
                )

            [3] => Array
                (
                    [action] => open
                    [timestamp] => 2019-08-02T20:26:43+00:00
                )
    )
)

I want to count the total number of action which has action=open. So the result will be 3

You can try using array-column and array-count-values as:

$actions = array_column($arr['activity'], 'action');
$cnts = array_count_values($actions );

Now just print the 'open` as:

echo $cnts['open'];

You can also do simple loop as:

$cnt = 0;
foreach($arr['activity'] as $e) {
    if ($e['action'] == 'open') $cnt++;
    if ($cnt == 1) echo "First open at: " . $e['timestamp']; // print the date of the first open action
}