У меня есть 3D-массив. Мне нужно извлечь следующее:
- количество экземпляров уникальных предметов в массиве самого глубокого уровня
- количество совпадений определенных элементов в массиве самого глубокого уровня
Массив выглядит так:
$arr = (
[0] => array([0] => array([flag][token][value])
[1] => array([flag][token][value])
)
)
Я попытался перебрать массив, используя цикл для и оператор 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 == "существительное", значение value элемента, хранящегося в $ new_arr1, и для flag == "verb", значение значение элемент хранится в $ new_arr2:
$new_arr1 = (
[dog] => 7
[cat] => 2
[horse] => 4
);
$new_arr2 = (
[chase] => 2
[eat] => 5
[pwn] => 3
);
это даст мне количество уникальных значений массива уровней глубины, к которым я не могу получить доступ с помощью функции * array_uniqe *.
Кроме того, мне нужно выполнить подсчет совпадений этих значений, что-то вроде этого:
подсчитывает количество раз, когда какой-либо токен с определенным флагом появляется до или после другого токена с определенным флагом:
псевдокод:
$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» - это имена ассоциативного массива, а «собака» и «погоня» - это значения, хранящиеся в другом массиве.
)