function isLastNameEqual($someLastName, $otherLastName) {
// Пара "ий/ая"
if (
(mb_substr($someLastName, -2, 2) === "ий" && mb_substr($otherLastName, -2, 2) === "ая") ||
(mb_substr($someLastName, -2, 2) === "ая" && mb_substr($otherLastName, -2, 2) === "ий")
) {
return (mb_substr($someLastName, 0, -2) === mb_substr($otherLastName, 0, -2));
}
// Последня буква "а"
if (mb_substr($someLastName, -1, 1) !== "а" && mb_substr($otherLastName, -1, 1) === "а") {
return ($someLastName === mb_substr($otherLastName, 0, -1));
}
if (mb_substr($someLastName, -1, 1) === "а" && mb_substr($otherLastName, -1, 1) !== "а") {
return (mb_substr($someLastName, 0, -1) === $otherLastName);
}
return ($someLastName === $otherLastName);
}
// Проверка
var_dump(isLastNameEqual("Петров", "Петрова")); // true
var_dump(isLastNameEqual("Слуцкий", "Слуцкая")); // true
var_dump(isLastNameEqual("Сидорчук", "Сидорчук")); // true
var_dump(isLastNameEqual("Нколаев", "Грызлов")); // false
Можно ли как то их сравнить посимвольно и при совпадении Начальных 5-7 символов к примеру, пару такую не делать?
SELECT
`users`.`id`,
CASE WHEN (`user_roles_details`.`id` IS NOT NULL AND `usergroup_roles_details`.`id` IS NOT NULL)
THEN CONCAT(GROUP_CONCAT(DISTINCT `user_roles_details`.`name`), ',', GROUP_CONCAT(DISTINCT `usergroup_roles_details`.`name`))
WHEN (`user_roles_details`.`id` IS NOT NULL AND `usergroup_roles_details`.`id` IS NULL)
THEN GROUP_CONCAT(DISTINCT `user_roles_details`.`name`)
WHEN (`user_roles_details`.`id` IS NULL AND `usergroup_roles_details`.`id` IS NOT NULL)
THEN GROUP_CONCAT(DISTINCT `usergroup_roles_details`.`name`)
ELSE
NULL
END AS 'roles'
FROM
`users`
LEFT JOIN `roles_users` ON (`roles_users`.`user`=`users`.`id`)
LEFT JOIN `roles` AS `user_roles_details` ON (`user_roles_details`.`id`=`roles_users`.`role`)
LEFT JOIN `roles_groups` ON (`roles_groups`.`gid`=`users`.`gid`)
LEFT JOIN `roles` AS `usergroup_roles_details` ON (`usergroup_roles_details`.`id`=`roles_groups`.`role`)
GROUP BY `users`.`id`
function splitByFirstLetter(array $arr, $key="name")
{
$splitted = [];
foreach ($arr as $element) {
$firstLetter = mb_substr($element[$key], 0, 1);
$splitted[$firstLetter][] = $element;
}
return $splitted;
}
$data = [
['id' => '1', 'name' => 'яблоко'],
['id' => '2', 'name' => 'банан'],
['id' => '3', 'name' => 'баклажан'],
['id' => '4', 'name' => 'арбуз'],
['id' => '5', 'name' => 'апельсин'],
];
$data = splitByFirstLetter($data);
ksort($data); // сортировка свежеполученного массива по алфавиту.
/*
Output:
array(3) {
["а"]=>
array(2) {
[0]=>
array(2) {
["id"]=>
string(1) "4"
["name"]=>
string(10) "арбуз"
}
[1]=>
array(2) {
["id"]=>
string(1) "5"
["name"]=>
string(16) "апельсин"
}
}
["б"]=>
array(2) {
[0]=>
array(2) {
["id"]=>
string(1) "2"
["name"]=>
string(10) "банан"
}
[1]=>
array(2) {
["id"]=>
string(1) "3"
["name"]=>
string(16) "баклажан"
}
}
["я"]=>
array(1) {
[0]=>
array(2) {
["id"]=>
string(1) "1"
["name"]=>
string(12) "яблоко"
}
}
}
*/
UPDATE `main` SET `dateend`=DATE_FORMAT(`dateend`, '%d.%m.%Y');
<?php foreach ($ant->authors as $author) { ?>
<?= $author->author_name ?>
<?php } ?>
SELECT `COLUMN_TYPE`
FROM `information_schema`.`COLUMNS`
WHERE 1
AND `TABLE_SCHEMA`='schema.name' -- не знаю вашей, не забудьте поменять
AND `TABLE_NAME`='orders'
AND `COLUMN_NAME`='order_id'
SELECT
`orders`.`order_id`,
`information_column_order_id`.`COLUMN_TYPE` AS 'order_id_column_type'
FROM
`orders`
JOIN `information_schema`.`COLUMNS` AS `information_column_order_id` ON (
`TABLE_SCHEMA`='schema.name' -- не знаю вашей, не забудьте поменять
AND `TABLE_NAME`='orders'
AND `COLUMN_NAME`='order_id'
)
SELECT *
FROM `table`
WHERE `status`='maubert'
AND (
(`AssosUser`='LAROQUE' AND `telepro`='DENIS') OR
(`AssosUser` IN ('LAROQUE', 'N.C.') AND `telepro` IN ('MANGEL', 'MORANGE')
);
$row = $result->fetch_row();
$firstField = $row[0];
_stripSlashesRecursive($firstField);
DELETE FROM Screenshots
WHERE 1
AND tSTAMP < DATE_SUB(NOW(), INTERVAL ? SECOND)
AND (
tSTAMP NOT IN (
SELECT `subquery`.`last_timestamp` FROM (
SELECT MAX(tSTAMP) AS 'last_timestamp'
FROM Screenshots
GROUP BY GUID
) AS `subquery`
)
)
как правильно на ноде сделать выборку id = информация о этой стране?
SELECT *
FROM
`country`
JOIN `country_info` ON (`country_info`.`country_id`=`country`.`id`)
SELECT * FROM users.data WHERE date_sp REGEXP "^(\d{2})-0[1-9]-(\d{4})$"
function login($name, $password)
{
global $gb;
$mysqli= $db->connect();
}
class user {
private $db;
public function __construct(DataBase $db)
{
$this->db = $db;
}
public function login($name, $password)
{
$mysqli = $this->db->connect();
}
}
// Инициализация класса будет выглядеть так:
$user = new user($db);
$user->login();
## Строка с лишними апострофами в условии:
LEFT JOIN `users_info` ON 'order_info.id_user'='users_info.id_user'
## Код, идентичный предыдущему:
LEFT JOIN `users_info` ON 'какая-то чепуха'='другая чепуха'
LEFT JOIN `users_info` ON order_info.id_user=users_info.id_user