Добрый день! Мне нужно создать такое условие "Если в переменной только цыфры то..." если что-то ждругое то... Передаю через форму редактирования цыфровое значение (при условии что ячейка пуста), а заполняется она из базы, а если ячейка заполнена, то оставляй такой как есть. вот что я сделал: Код (Text): function fDevise ($data) { //$devise = ''; if ($data == 1){$devise = 'Свитч';} if ($data == 2){$devise = 'ИБП';} if ($data == 3){$devise = 'Деглюкатор';} if ($data == 4){$devise = 'MiniGBIC';} if ($data == 5){$devise = 'Пачкорд';} if ($data == 6){$devise = 'Кабель';} return $devise; } f ($devise != mb_ereg("[0-9]{1,2}", $devise)) {$devise = $_POST['devise'];} else {$devise = fDevise($devise);} Почему-то работает как-то не понятно, Переменная должна, если цыфры - стать словом, но вот результат : $devise=2; $_POST['devise']=2 fDevise($devise)=ИБП; Тоесть мое условие не срабатывает(((( так как $devise=2; , а должно быть $devise=ИБП;
ereg* устаревшие функции, используй preg, а в данном случае проще PHP: if (strspn($s, '0123456789') == strlen($s)) echo 'Yes'; else echo 'No'; а может быть тебя устроит is_numeric()
function fDevise ($data) { //$devise = ''; if ($data == 1){$devise = 'Свитч';} if ($data == 2){$devise = 'ИБП';} if ($data == 3){$devise = 'Деглюкатор';} if ($data == 4){$devise = 'MiniGBIC';} if ($data == 5){$devise = 'Пачкорд';} if ($data == 6){$devise = 'Кабель';} return $devise; } if ($devise != preg_match("/[0-9]{1,2}/", $devise)) {$devise = $_POST['devise'];} else {$devise = fDevise($devise);}
Возможно придется выставить локаль . По крайней меру у меня на хостинге для работы с русскими буквами надо ! setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
Объясните мне, недалёкому, почему РНР-программисты так любят сочинять узоры из ифов? Код в принципе лучше переписать. if ($devise != preg_match("/[0-9]{1,2}/", $devise)) это условие не сработает так как допущена целая куча ошибок: 1. devise не определена 2. preg_match возвращает 0 или 1 (найдено или не найдено). Вы же умудрились сравнить булев тип с самим значением переменной. Одному только Богу известно, что вернёт в итоге такая конструкция (это код из серии #define true false). 3. Сравнение лучше провести внутри функции. Я так понял вам это надо: PHP: <?php function test($data) { if ($data == 2){return 'ИБП';} if ($data == 3){return 'Деглюкатор';} if ($data == 4){return 'MiniGBIC';} if ($data == 5){return 'Пачкорд';} if ($data == 6){return 'Кабель';} return $data; } echo test(2), "\n", test(0), "\n", test(100); /* ИБП 0 100 */ Индусятину с ифами не переписываю так как лень P. S. К. О. также напоминает, Devise - это завещание