根据搜索条件制作一个新的数组形式的多维数组

我有一个多维数组。我想搜索值(用户名IE jon)并计算特定用户名的总“YES”。


IE 根据下面的数组 Andew 重复三次索引 1,3,4,其值为“YES”,因此 Andrew 的总“YES”计数值 = 3


Jon 重复两次,但其值为“NO”,因此其值为 = 0


Array

(

    [0] => Array

        (

            [0] => Jon

            [1] => NO

        )


    [1] => Array

        (

            [0] => Andew

            [1] => NO

        )


    [2] => Array

        (

            [0] => Walid

            [1] => YES

        )


    [3] => Array

        (

            [0] => Andew

            [1] => YES

        )


    [4] => Array

        (

            [0] => Andew

            [1] => YES

        )


    [5] => Array

        (

            [0] => Jon

            [1] => NO

        )


    [6] => Array

        (

            [0] => Andew

            [1] => YES

        )


)

我想让用户作为键和值 = 计算“是”的总数。


输出

Array

(

john => 0,

Andew => 3

Walid => 1

)

任何人,请建议一个可能的解决方案?


ibeautiful
浏览 87回答 3
3回答

动漫人物

您可以使用array_reduce:$stats = array_reduce($array, static function ($stats, $entry) {  $stats[$entry[0]] = ($stats[$entry[0]] ?? 0) + ($entry[1] === 'YES' ? 1 : 0);  return $stats;});这将建立一个数组,将其初始值设置为 0,并且只要找到 a,就会将其递增 1。$statsYES演示:https://3v4l.org/NmZ7G

holdtom

如果您只需要“YES”的计数,则下面的计数将输出计数。$count_array = [];foreach($array as $values){    if(!isset($count_array[$values[0]])){        $count_array[$values[0]] = 0;     }     if($values[1] === 'YES'){       $count_array[$values[0]] ++;     }       }print_r($count_array);

拉莫斯之舞

(与@Jeto array_reduce没有什么不同。一个简单的前言:<?php$data =[&nbsp; &nbsp; ['Brian', 'YES'],&nbsp; &nbsp; ['Brian', 'YES'],&nbsp; &nbsp; ['Charles', 'NO'],&nbsp; &nbsp; ['Charles', 'YES'],&nbsp; &nbsp; ['Nicola', 'NO']];foreach($data as list($name, $yes_no))&nbsp; &nbsp; $yes_counts[$name] = ($yes_counts[$name] ?? 0) + (int) ($yes_no === 'YES');var_export($yes_counts);输出:array (&nbsp; &nbsp; 'Brian' => 2,&nbsp; &nbsp; 'Charles' => 1,&nbsp; &nbsp; 'Nicola' => 0,&nbsp; )
打开App,查看更多内容
随时随地看视频慕课网APP