【发布时间】:2011-12-05 11:28:41
【问题描述】:
我有一个 3D 数组。我需要提取以下内容:
- 最深层数组中唯一项的出现次数
- 最深层数组中某些项目的共现次数
数组如下所示:
$arr = (
[0] => array([0] => array([flag][token][value])
[1] => array([flag][token][value])
)
)
我尝试使用 for 循环和 if 语句遍历数组,如下所示:
$new_arr1 = ""; // $new_arr1 = array(); //same thing, the later code doesn't work
for ($i=0; $i<count($arr);$i++)
{
for ($j=0; $j<count($arr[$i]); $j++)
{
$value= $arr[$i][$j][value];
if ($arr[$i][$j][flag] == "noun")
array_push($new_arr1, $value)
elseif ($arr[$i][$j][flag] == "verb")
array_push($new_arr2, $value)
}
}
用 switch 语句做了同样的事情,无法让它工作。通过进行这种调节,我希望将满足特定条件的最深层数组中的所有值放入一个数组中,然后对它们执行*array_count_values*。这会给我以下信息:
对于 flag == "noun",value 元素的值存储在 $new_arr1 中,对于 flag == "verb",存储在 $new_arr2 中的 value 元素的值:
$new_arr1 = (
[dog] => 7
[cat] => 2
[horse] => 4
);
$new_arr2 = (
[chase] => 2
[eat] => 5
[pwn] => 3
);
这将为我提供使用 *array_uniqe* 函数无法访问的 deepes 级别数组的唯一值计数。
除此之外,我还需要对这些值的同时出现次数进行计数,如下所示:
计算具有特定标志的某个标记出现在具有特定标记的另一个标记之前或之后的次数:
伪代码:
$count=0;
if ( (($arr[$i][$j][flag] == "noun") && ($arr[$i][$j][value] == "dog")) &&
(($arr[$i][$j+/-1][flag] == "verb") && ($arr[$i][$j+/-1][value] == "chase"))
)
$count++;
$counter = array($count = array($arr[$i][$j][value]), $arr[$i][$j+/-1][value])
这基本上会给出以下内容:
counter:
array(
"7" => ([0] => "dog", [1] => "chase")
"4" => ([0] => "cat", [1] => "eat")
)
其中“7”和“4”是关联数组的名称,而“dog”和“chase”是存储在另一个数组中的值。
)
【问题讨论】:
-
什么是
[flag][token][value]?钥匙?价值观?事情的顺序? -
这些是关联数组中的关联键
标签: php arrays count statistics