php - 我需要计算数组值
问题描述
我需要计算数组值
$str = '"Cat","A","A","A","A"';
$abc=array($str, "A","Cat","Dog","A","Dog");
print_r(array_count_values($abc));
结果出来了:
Array ( ["Cat","A","A","A","A"] => 1 [A] => 2 [Cat] => 1 [Dog] => 2 )
但我需要这样:
Array ( [A] => 6 [Cat] => 2 [Dog] => 2 )
解决方案
这是因为$str
是字符串而不是数组。因此,这将作为一个元素添加到$abc
数组中。
您可以使用以下函数将 in 转换为数组explode
:
$str = '"Cat","A","A","A","A"';
$arr = explode(',', $str);
// So $arr is Array([0] => "Cat", [1] => "A", [2] => "A", [3] => "A", [4] => "A")
然后您需要删除每个元素周围的双引号。我建议使用该trim
函数和array_map
, 将其应用于每个元素:
$arr = array_map(function ($item) { return trim($item, '"'); }, $arr);
// $arr is Array([0] => Cat, [1] => A, [2] => A, [3] => A, [4] => A)
然后您可以将其与其余值合并:
$abc = array_merge($arr, array("A","Cat","Dog","A","Dog"));
print_r(array_count_values($abc));
// Should be Array ( [A] => 6 [Cat] => 2 [Dog] => 2 )
推荐阅读
- ios - 无法根据时间戳在聊天应用程序中检索文档
- android - iBeacon UUID 未正确显示 Kotlin
- php - 使用现有的 Idp 和 SP 在 Laravel 中集成 SAML
- php - 如何在 laravel 6 的会话中保存每个 foreach 数据?
- java - 未找到 Zip 标头,可能不是 zip 文件 - Zip4j、java
- javascript - Href to another page React Gatsby
- angularjs - akka-http 网络::err_incomplete_chunked_encoding 200 (ok)
- apache-spark - 如何附加两个字典RDD并形成一个字典rdd以发送到pyspark中的kafka主题?
- intellij-idea - 如何在 IntelliJ IDEA 中执行/应用 dart linter 规则
- java - 如何在 android studio java 中添加自定义库?