计算2D阵列列中所有值的第一个字符的出现 我有一个基于数组的MySQL数据库。 这是数组。 [ 0 => [ 'id'=>'1997' 'lokasi_terakhir'=>'ya4121' 这是给出的 1 => [ 'id'=>'1998' 'lokasi_terakhir'=>'...

问题描述 投票:0回答:3
这是一个目标:

lokasi_terakhir
    

您可以这样对这些项目进行分组:

[ "Y" => 1, "P" => 2 ]

这里是两种精制方法。  您选择哪一个将归结为您的个人喜好(您找不到更好的方法)。

php arrays multidimensional-array grouping counting
3个回答
2
投票
$array = [ 0 => [ 'id' => '1997', 'lokasi_terakhir' => 'YA4121' ], 1 => [ 'id' => '1998', 'lokasi_terakhir' => 'PL2115' ], 2 => [ 'id' => '1999', 'lokasi_terakhir' => 'PL4111' ] ]; $result = array(); foreach($array as $item) { $char = substr($item['lokasi_terakhir'], 0, 1); if(!isset($result[$char])) { $result[$char] = array(); } $result[$char][] = $item; }

值的第一个字符宣布为

lokasi_terakhir
声明中的键。  如果键尚不存在输出数组中,则必须将其声明 /设置为
$result

1
投票
第二种方法首先使用每个子阵列中的

1

值的第一个字符映射一个新数组,然后计算每个字母的每个出现。

示例链接
Method#1 :( foreach)
lokasi_terakhir

Method#2 :(功能)

foreach($array as $item){
    if(!isset($result[$item['lokasi_terakhir'][0]])){
        $result[$item['lokasi_terakhir'][0]]=1;  // instantiate
    }else{
        ++$result[$item['lokasi_terakhir'][0]];  // increment
    }
}
var_export($result);

输出:(来自任何一个) var_export(array_count_values(array_map(function($a){return $a['lokasi_terakhir'][0];},$array))); // generate array of single-character elements, then count occurrences

array (
  'Y' => 1,
  'P' => 2,
)

该代码获得字段的第一个字母

<?php $array=[ 0 => [ 'id' => '1997', 'lokasi_terakhir' => 'YA4121' ], 1 => [ 'id' => '1998', 'lokasi_terakhir' => 'PL2115' ], 2 => [ 'id' => '1999', 'lokasi_terakhir' => 'PL4111' ] ]; foreach($array as $row){ $newArray[]=$row['lokasi_terakhir'][0]; } print_r(array_flip(array_unique($newArray)));
,获取独特的值以避免重复,然后翻转数组以获取所需的结果。

输出是这样的:

lokasi_terakhir
    

1
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.