nastya97core
@nastya97core
Начинающий программист

Можно ли в одном действии сразу назначить переменную, достать из неё [0] и сравнить?

Здравствуйте. Мне нужно сделать условие, при котором я проверяю: начинается ли строка со слова "Удалить" и если да, то обрабатываю вторую часть кода.
$msg = 'Удалить Александр Петров';
if(mb_strtolower(explode(' ',trim($msg), 2)[0] == 'удалить') {
	// здесь нужно работать c "Александр Петров"
}


Если я перед explode напишу $perem = explode... то он будет равен именно слову Удалить, потому что далее я вызываю [0]. Подскажите, кроме как ещё раз вызова explode - есть варианты решения?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$msg = 'Удалить Александр Петров';
$command = explode(' ', trim($msg), 2);
if(mb_strtolower($command[0]) === 'удалить') {
  // здесь нужно работать c $command[1]
}
Ответ написан
Комментировать
rpsv
@rpsv
делай либо хорошо, либо никак
А регулярки почему в сторонке отдыхают?
$re = '/^удалить (.+)$/ui';
$msg = 'Удалить Александр Петров';
if(preg_match($re, $msg, $m)) {
  $alexPetrov = $m[1];
  // здесь нужно работать c "Александр Петров"
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@JohnDidact
Нуб во всём
Если бы мне жалко было использовать регулярки, то использовал бы mb_strlen() — чтобы посчитать кол-во символов в строке 'Удалить' (ну или не считать, а самому написать). Потом mb_stripos() чтобы проверить, есть ли в строке искомая строка (Удалить) и стоит ли она вначале. Затем, mb_substr() для того, чтобы вытащить "вторую часть кода".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы