我有一个基于数组的 MySql 数据库。这是数组。
[
0 => [
'id' => '1997'
'lokasi_terakhir' => 'YA4121'
]
1 => [
'id' => '1998'
'lokasi_terakhir' => 'PL2115'
]
2 => [
'id' => '1999'
'lokasi_terakhir' => 'PL4111'
]
]
如何获取lokasi_terakhir
按第一个字符分组的元素?最好的方法是什么?
这是目标:
[
"Y" => 1,
"P" => 2
]
请指教
这里有两种精炼的方法。您选择哪一个取决于您的个人喜好(您找不到更好的方法)。
首先,我迭代数组,将lokasi_terakhir
值的第一个字符$result
声明为声明中的键。如果键在输出数组中尚不存在,则必须将其声明/设置为1
. 在它被实例化之后,它可以被递增——我使用的是“预递增”。
第二种方法首先使用lokasi_terakhir
每个子数组中值的第一个字符映射一个新数组,然后对每个字母的出现次数进行计数。
(演示链接)
方法#1:(foreach)
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);
方法#2:(功能)
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,
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句