Php 查找部分数组中出现的字符串
我有一个数组,其中我将类型填充为每个元素的字符串。例如: 类型数组Php 查找部分数组中出现的字符串,php,arrays,Php,Arrays,我有一个数组,其中我将类型填充为每个元素的字符串。例如: 类型数组 type1 | type2 | type2 | type3 | type2 | type1 | type3 $types = array('type1', 'type2', 'type2', 'type3', 'type2', 'type1', 'type3') 现在我想在迭代数组时计算每种类型的出现次数 例如: 当我位于数组的第一个元素时,我要返回: type1 : 1 type2 : 0 type3 : 0 当我处于我
type1 | type2 | type2 | type3 | type2 | type1 | type3
$types = array('type1', 'type2', 'type2', 'type3', 'type2', 'type1', 'type3')
现在我想在迭代数组时计算每种类型的出现次数
例如:
当我位于数组的第一个元素时,我要返回:
type1 : 1
type2 : 0
type3 : 0
当我处于我想要的第四要素时:
type1 : 1
type2 : 2
type3 : 1
实际上,我只想找到我正在寻找的元素类型的出现。例如:第四个元素
type3: 1
有没有php函数可以做到这一点?或者我必须迭代整个数组并计算类型的出现次数
谢谢我不确定我是否完全理解您的问题,但是如果您想计算数组的所有值,可以使用函数:
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
The above example will output:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
上述示例将输出:
大堆
(
[1] => 2
[你好]=>2
[世界]=>1
)
以下是正确的解决方案:
$index = 4;
$array = array('type1', 'type2', 'type2', 'type3', 'type2', 'type1', 'type3')
var_dump( array_count_values( array_slice( $array, 0, $index)));
如果使用array\u slice
获取数组的一部分,然后将其运行到array\u count\u values
,实际上可以计算子数组的值。因此,对于任何$index
,您都可以计算0
到$index
之间的值
这将产生:
array(3) { ["type1"]=> int(1) ["type2"]=> int(2) ["type3"]=> int(1) }
没有本机函数可以执行此操作。但我们可以写一个简单的例子:
$items = array(
'type1',
'type2',
'type2',
'type3',
'type2',
'type1',
'type3'
);
foreach ($items as $order => $item) {
$previous = array_slice($items, 0, $order + 1, true);
$counts = array_count_values($previous);
echo $item . ' - ' . $counts[$item] . '<br>';
}
不要使用伪代码语法,而是使用一个真正的php数组。我知道如何做到这一点,但我相信它现在是有效的。我现在就提供php代码。这些类型是数据类型吗?
type1 - 1
type2 - 1
type2 - 2
type3 - 1
type2 - 3
type1 - 2
type3 - 2