Есть функция, параметры которой задаются через массив и внутри с ними произвожу определенные вычисления, где мне нужны манипуляции с числами.
function comment_html($likes=array('minus' =>0,'plus'=>0 )){
if(!$likes['plus'])$likes['plus']=0; // Illegal string offset
if(!$likes['minus'])$likes['minus']=0; // in home..
...
}
Все работало хорошо до тех пор пока не обновил до php7
.
Теперь получаю регулярные варинги:
PHP7 Warning: Illegal string offset
Понимаю, что это связано с приведением значений массива к числовым значениям, но, не понимаю как это исправить..
UDP: как мне подсказали в комментариях, реально ошибка не в строках выше, а в данных, которые я оправляю в функцию. Вот такие значения могут быть на входе:
string(0) ""
string(1) "1"
string(0) ""
array(2) { ["plus"]=> int(1) ["minus"]=> int(1) }
array(1) { ["plus"]=> int(1) }
string(1) "2"
array(2) { ["plus"]=> string(1) "0" ["minus"]=> int(1) }
array(2) { ["plus"]=> string(1) "1" ["minus"]=> string(1) "0" }
И затем отправляю в конструкторе
$comment = $this->comment_html($likes);
Как можно унифицировать эти значения, чтобы варинга не возникало и все работало верно, как и раньше?
UDP2: С массивами все понятно, а вот с преобразованием string
в array
у меня не выходит
if(isset($likes) === true && $likes === '') {
var_dump($likes); //string(0) ""
$likes=array('minus' =>0,'plus'=>0 ); //в месте нулей ничего не выводит
if(!$likes['plus'])$likes['plus']=0; //работает, выводит 0 с варингом
if(!$likes['minus'])$likes['minus']=0; //работает, выводит 0 с варингом
}
Если форматы данных на входе ограничены списком из вопрос, вот так можно
$template = ['minus' =>0,'plus'=>0];
if(is_array($likes)) {
$likes = array_replace($template, $likes);
}
else {
$likes = ['minus' =>0,'plus'=> $likes];
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем привет, слетела кодировка, почта была создана на хостинге pskz Помогите плиз
Как сделать условие если нету дочерных страниц выполнить другой запрос $args для того чтобь вывести соседные страницы а не дочерные