PHP 多维数组 - 计算实例数
PHP Multidimensional Array - Count Number of Instances
我对 PHP 中的多维数组有点吃力。我是 PHP 的新手,所以请注意我可能有点菜鸟。
我想要实现的目标:我使用 ExpressionEngine 作为我的 CMS,使用 Freeform Pro 来记录调查的答案。答案的值为 1、2、3、4 或 5。一切正常。然后我使用 SQL 查询将保存的数据从数据库中提取出来。这是它开始变得复杂的地方。我需要调查中每个问题的平均值。所以合乎逻辑的做法(我认为)是提取每个问题的数据并将其放入一个数组中:
$tva_1 = array();
$tva_2 = array();
$tva_3 = array();
$tva_4 = array();
SELECT form_field_259, form_field_260, form_field_261, form_field_262 FROM exp_freeform_form_entries_13 WHERE status='open'
array_push($tva_1, ('{form_field_259}'));
array_push($tva_2, ('{form_field_260}'));
array_push($tva_3, ('{form_field_261}'));
array_push($tva_4, ('{form_field_262}'));
记住 $tva_1 里面可能有 5 个变量,例如:2, 4, 3, 1, 4。$tva_2 也是如此,依此类推。
因此,一旦我将该数据分配给各种 tva_ 数组,我就需要将这四个数组放入另一个数组,即 $allNumberArray:
$allNumberArray = array($tva_1, $tva_2, $tva_3, $tva_4);
所以现在如果我尝试 print_r($allNumberArray);它向我展示了所有数据,一切都在按预期进行。
Array
(
[0] => Array
(
[0] => 3
[1] => 5
[2] => 2
[3] => 5
[4] => 3
)
[1] => Array
(
[0] => 3
[1] => 2
[2] => 4
[3] => 3
[4] => 3
)
[2] => Array
(
[0] => 5
[1] => 4
[2] => 3
[3] => 1
[4] => 3
)
[3] => Array
(
[0] => 4
[1] => 2
[2] => 5
[3] => 1
[4] => 3
)
问题是:我需要统计每个评分被使用的次数。所以比如我从上面的print_r可以看出5显示了4次,4显示了3次,3显示了7次等等。我尝试了一个计数函数,比如下面这个,但是仅适用于一维数组(我认为):
$userStrongAgree = count(array_filter($allNumberArray, function ($agreementFive) { return $agreementFive == 5; }));
这个问题卡了一天半了,明天下午deadline,有点着急了。我真的很感激任何帮助或只是正确方向的指示。
非常感谢
试试这个。索引是 value/rating,值是计数:
$count = array_count_values(call_user_func_array('array_merge', $array));
尝试将所有项目推入唯一数组并用 array_count_values()
计数:
<?php
$array=$allNumberArray; //your Array
$new_arr=array();
foreach($array as $key=>$value){
foreach ($value as $key2 => $value2) {
array_push($new_arr,$value2);
}
}
$last_arr=array_count_values($new_arr);
foreach ($last_arr as $key3 => $value3) {
echo $key3.' is '.$value3.' times<br>';
}
?>
我对 PHP 中的多维数组有点吃力。我是 PHP 的新手,所以请注意我可能有点菜鸟。
我想要实现的目标:我使用 ExpressionEngine 作为我的 CMS,使用 Freeform Pro 来记录调查的答案。答案的值为 1、2、3、4 或 5。一切正常。然后我使用 SQL 查询将保存的数据从数据库中提取出来。这是它开始变得复杂的地方。我需要调查中每个问题的平均值。所以合乎逻辑的做法(我认为)是提取每个问题的数据并将其放入一个数组中:
$tva_1 = array();
$tva_2 = array();
$tva_3 = array();
$tva_4 = array();
SELECT form_field_259, form_field_260, form_field_261, form_field_262 FROM exp_freeform_form_entries_13 WHERE status='open'
array_push($tva_1, ('{form_field_259}'));
array_push($tva_2, ('{form_field_260}'));
array_push($tva_3, ('{form_field_261}'));
array_push($tva_4, ('{form_field_262}'));
记住 $tva_1 里面可能有 5 个变量,例如:2, 4, 3, 1, 4。$tva_2 也是如此,依此类推。
因此,一旦我将该数据分配给各种 tva_ 数组,我就需要将这四个数组放入另一个数组,即 $allNumberArray:
$allNumberArray = array($tva_1, $tva_2, $tva_3, $tva_4);
所以现在如果我尝试 print_r($allNumberArray);它向我展示了所有数据,一切都在按预期进行。
Array
(
[0] => Array
(
[0] => 3
[1] => 5
[2] => 2
[3] => 5
[4] => 3
)
[1] => Array
(
[0] => 3
[1] => 2
[2] => 4
[3] => 3
[4] => 3
)
[2] => Array
(
[0] => 5
[1] => 4
[2] => 3
[3] => 1
[4] => 3
)
[3] => Array
(
[0] => 4
[1] => 2
[2] => 5
[3] => 1
[4] => 3
)
问题是:我需要统计每个评分被使用的次数。所以比如我从上面的print_r可以看出5显示了4次,4显示了3次,3显示了7次等等。我尝试了一个计数函数,比如下面这个,但是仅适用于一维数组(我认为):
$userStrongAgree = count(array_filter($allNumberArray, function ($agreementFive) { return $agreementFive == 5; }));
这个问题卡了一天半了,明天下午deadline,有点着急了。我真的很感激任何帮助或只是正确方向的指示。
非常感谢
试试这个。索引是 value/rating,值是计数:
$count = array_count_values(call_user_func_array('array_merge', $array));
尝试将所有项目推入唯一数组并用 array_count_values()
计数:
<?php
$array=$allNumberArray; //your Array
$new_arr=array();
foreach($array as $key=>$value){
foreach ($value as $key2 => $value2) {
array_push($new_arr,$value2);
}
}
$last_arr=array_count_values($new_arr);
foreach ($last_arr as $key3 => $value3) {
echo $key3.' is '.$value3.' times<br>';
}
?>