[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. felix_v26

    felix_v26 New Member

    Joined:
    19 Mar 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    <?php
    $b=6;
    $a = ($b == 6) ? "равно" : ($b < 6) ? "меньше" : "больше";
    echo $a;
    ?>

    почему этот код выдаёт меньше?
     
  2. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    попробуйте вот так

    $a = ($b == 6) ? "равно" : (($b < 6) ? "меньше" : "больше");
     
  3. felix_v26

    felix_v26 New Member

    Joined:
    19 Mar 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    да, так лучше) а происходит это я так понял из-за ассоциативности
    http://www.php.ru/manual/language.operators.html
     
  4. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    на сколько мне помнится нет(хотя могу и ошибаться, пусть поправят) это называется тернарная условная операция
    суть в том что если в блоке Else указывается условие его надо брать в скобки
    то есть если бы вы сделали еще один блок его тоже надо брать в скобки
    $a = ($b == 6) ? "равно" : (($b < 6) ? "меньше" : (($b >= 6) :"больше или равно" : "больше"));
    как то так)) условие корявое конечно, но в голову чет ниче не лезет))
     
    #18924 ishpanec, 29 Jul 2011
    Last edited: 29 Jul 2011
  5. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Если не считать ошибку в синтаксисе, эта строчка никогда не выдаст "больше".
    Подумай, почему :)
     
  6. AnGeI

    AnGeI Elder - Старейшина

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    даже если смотреть по-шагово:
    PHP:
    $b=6;
    (
    $b ==  6) ? "равно" : ($b 6// true
    "равно" "меньше" "больше";   // true


    $b=100500;
    (
    $b ==  6) ? "равно" : ($b 6// false
    ($b 6) ? "меньше" "больше";   // false
     
  7. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    да знаю что условие корявое))

    $a = ($b == 'apr') ? "апрель" : (($b == 'may') ? "май" : (($b == 'yun') ? "июнь" : "другой месяц"));

    думаю такой вариант правильней?))


    а по моему вопросу кто нить поможет?))

    http://forum.antichat.ru/showpost.php?p=2769888&postcount=19077
     
    #18927 ishpanec, 29 Jul 2011
    Last edited: 29 Jul 2011
  8. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Имхо, тернарный оператор не для таких извращений создан ^_^
     
  9. bjong

    bjong Elder - Старейшина

    Joined:
    26 Jul 2003
    Messages:
    41
    Likes Received:
    12
    Reputations:
    18
    А если создаешь файл с таким содержанием:
    PHP:
    <?
    function 
    redirekt () {
    setcookie('login',false);
    setcookie('time',false);
    header("Location: adm.php?error"); } 
    redirekt();
    ?>
    Редерект сработает ведь?)
    Ошибка явно не в этом куске кода, имхо )
     
  10. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    я вообще не пойму в чем там "ошибка" но если стоит функци echo то все работает, иначе условия не выполняются. он их просто пропускает, такое происходит в трех файлах, если нет функции echo то они не работают, я ни черта понять не могу, стоит добавить функцию echo в те места, где она не сработает, как все условия начинают обрабатываться, может это с денвером косяки??))
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    ishpanec Что вы понимаете под "условие не сработает"? Если вы имеете ввиду, что не происходит редиректа после первого вызова вашей функции - то это ожидаемая реакция. Отправляя заголовок Location следует завершать работу скрипта с помощью функции die() например, иначе скрипт продолжит выполнение и вы имеете то, что имеете.

    Почему echo приводит к правильному результату? Вывод текста в браузер сопровождается принудительной отправкой всех готовых заголовков, поэтому происходит редирект.
     
    _________________________
  12. judo60

    judo60 New Member

    Joined:
    28 Nov 2010
    Messages:
    4
    Likes Received:
    2
    Reputations:
    0
    если в скрипте ,используются элементы которые используют заголовки, то до них ни должно посылаться никакой информации
     
  13. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    так пишет ошибку

    вот как есть сейчас
    PHP:
    $mypost="[img].$content_b[0].[/img].\n.$opis.\n.$opis_k.\n.$content_e[0]";
    как правильно разставить знаки?
     
    #18933 qaz, 29 Jul 2011
    Last edited: 29 Jul 2011
  14. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    понятно, спасибо большое))))
    буду знать)
    а что бы завершать с функцие die() её просто вписать, или передавать параметры?
    например
    PHP:
    header ("Location: adm.php");
    die();

    //или 

    header ("Location: adm.php");
    die(
    "Конец");

     
  15. ishpanec

    ishpanec New Member

    Joined:
    27 Jul 2011
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    текстовую информацию нужно отделять от переменных кавычками или апострофами, соединять их точкой

    PHP:
    $mypost="[img]".$content_b[0]."[/img]\n".$opis."\n".$opis_k."\n".$content_e[0];
    как то так, но не уверен что сработает перенос строк: "\n"
     
  16. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    не так пишет што неизвестный модификатор \n
     
  17. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    это кто тебе пишет? он всё врёт
    и ты в чём кодишь, в блокноте чтоли? Скачай себе какойнить редактор для PHP, phpDesigner например
    и вместо \n делай \r\n
    просто exit;
     
    #18937 Ponchik, 30 Jul 2011
    Last edited: 30 Jul 2011
    4 people like this.
  18. Andres

    Andres Elder - Старейшина

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    die и exit (как написал понч - аналоги), это языковые конструкции, которые можно писать и без скобок и без параметров.
     
  19. eclipse

    eclipse Member

    Joined:
    19 Dec 2010
    Messages:
    155
    Likes Received:
    74
    Reputations:
    85
    Как с помощью php декодировать url encode методом закодированный текст с кириллическими буквами?
    Обычный urldecode не канает (для кириллицы)

    Нашел метод на JS
    Code:
    function encode() {
    	var obj = document.getElementById('dencoder');
    	var unencoded = obj.value;
    	obj.value = encodeURIComponent(unencoded);
    }
    function decode() {
    	var obj = document.getElementById('dencoder');
    	var encoded = obj.value;
    	obj.value = decodeURIComponent(encoded.replace(/\+/g,  " "));
    }
    </script>
    
    Но мне нужен php..

    Не Актуально! - решил преобразованием файлов в utf8
     
    #18939 eclipse, 31 Jul 2011
    Last edited: 31 Jul 2011
  20. yakydza

    yakydza New Member

    Joined:
    27 Jul 2011
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Парни помогите пожалуйста. Смотрите. Есть папка, в ней файлы в каждом файле на 2 строке код как вывести по очереди из каждого файла этот код?
     
Thread Status:
Not open for further replies.