SLECT DISTINCT user.id, user.name FROM user
LEFT JOIN message ON user.id = message.user_id
WHERE messages.target_user = $user_id$ OR messages.user_id = $user_id$
-- $user_id$ это для какого юзера ищем список контактов
-- messages.target_user - id юзера которому предназначается сообщение
-- messages.user_id - id отправителя
<?php
$_POST = [
'cs' => 1,
'rr40' => 2,
'bs' => 3
];
$formula = '$cs$+$rr40$*$bs$';
$items = explode('$', $formula);
$operators = [
'-' => function ($result, $var) {
return $result - $var;
},
'+' => function ($result, $var) {
return $result + $var;
},
'/' => function ($result, $var) {
return $result / $var;
},
'*' => function ($result, $var) {
return $result * $var;
},
];
$result = 0;
$cur_operator = '+';
foreach ($items as $item) {
if (!empty($item)) {
if (array_key_exists($item, $operators)) {
$cur_operator = $item;
} else if (isset($_POST[$item])) {
$result = $operators[$cur_operator]($result, $_POST[$item]);
}
}
}
echo $result;
<?php
/**
* Функция склонения числительных в русском языке
*
* @param int $number Число которое нужно просклонять
* @param array $titles Массив слов для склонения
* @return string
**/
$titles = array('котик', 'котика', 'котиков');
function declOfNum($number, $titles)
{
$cases = array (2, 0, 1, 1, 1, 2);
return $number." ".$titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ];
}
есть более лучшие аналоги?