I am writing here the normal code in php
$words = array(); for ($n = 0; $n < count($tmp)-1; $n++) { // идем по всем словам, кроме последнего $w1 = $tmp[$n]; // это и следующее $w2 = $tmp[$n+1]; // только для наглядности if (!is_array($words[$w1])) // если массива тут еще нет, $words[$w1] = array(); // создаем if (!in_array($w2, $words[$w1])) // если слова еще нет в списке, $words[$w1][] = $w2; // добавляем } ?><pre><? print_r($words); // любуемся ?></pre><?
On the example of the link gives the result
Array ( [ИЗ-ЗА] => Array ( [0] => ЛЕСА [1] => ГОР [ЛЕСА] => Array ( [0] => ИЗ-ЗА ) [ГОР] => Array ( [0] => ЕДЕТ ) [ЕДЕТ] => Array ( [0] => ДЕДУШКА ) [ДЕДУШКА] => Array ( [0] => ЕГОР ) [ЕГОР] => Array ( [0] => САМ ) [САМ] => Array ( [0] => НА ) [НА] => Array ( [0] => ЛОШАДКЕ [1] => КОРОВКЕ [2] => ТЕЛЯТКАХ [3] => КОЗЛЯТКАХ ) [ЛОШАДКЕ] => Array ( [0] => ЖЕНА ) [ЖЕНА] => Array ( [0] => НА ) [КОРОВКЕ] => Array ( [0] => ДЕТИ ) [ДЕТИ] => Array ( [0] => НА ) [ТЕЛЯТКАХ] => Array ( [0] => ВНУКИ ) [ВНУКИ] => Array ( [0] => НА ) )
Passing the baton to sisarperam :)
PS: translated into uppercase, because in php keys are case sensitive, "Because"! = "Because"
if ($tmp[$i+1]!='')
The author apparently inventedisset($tmp[$i+1])
>$words[$tmp[$i]][]=$tmp[$i+1];
But this is a regular way of working with multidimensional arrays . T.ch. here even without a notice will work. >$words[$tmp[$i]]=array_unique($words[$tmp[$i]]);
Also popular govnokod: excessive resource-intensive operation inside the loop. It would be correct: foreach ($ tmp as $ i => $ w) {if (isset ($ tmp [$ i + 1])) {$ words [$ w] [] = $ tmp [$ i + 1] ; }} $ words = array_map ("array_unique", $ words) - Ilya Pirogov