Массив $arrtxt сравнивается по значению с массивом $new по ключу который также содержит в себе массив с ключами и после рандомно выводится рядом со схожим значением из массива $arrtxt но почему-то иногда результат пустым выводится, а если обновить страницу то результат отображается. В чем кроется причина понять никак не могу.
Вот сам код
$srt = 'Я навестил Ленина в мавзолее';
$arr = explode(' ', $srt);
$a = $arr;
$tmp = null;
$b = array_reduce($a, function($res, $el) use (&$tmp) {
if ($tmp) {$el = "$tmp $el"; $tmp = null;}
if (strlen($el)<=2) $tmp = $el;
else $res[] = $el;
return $res;
}, array());
if ($tmp) {$b[] = $tmp;}
$arrtxt = $b;
$new = array(
'Я навестил' => array('Я наведал', 'Я постетил'),
'в мавзолее' => array('в кремлевском мавзолее', 'в московском мавзолее')
);
$result = array_intersect_key($new, array_flip($arrtxt));
foreach($result as $key=>$item){
echo $key .' <b>похоже на</b> '.$item[rand(0, count($item))].'<br>';
}
Замените:
$item[rand(0, count($item))]
На:
$item[array_rand($item)]
$item[rand(0, count($item))] - Вот тут кроется причина.
У вас в массиве 2 значения, собсна count($item) выдаст 2. Получается rand(0, 2) - а это уже 3 значения.
Нужно как-то так: [rand(0, (count($item)-1))]
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости