рэха код PHP - як гэта зрабіць

Я спрабую паўтарыць некаторыя PHP код у PHP:

if(isset($_SESSION['id'])){
echo "
  • <?php echo $profile ?>
  • ";
    }else{
    echo "
  • login
  • ";
    }
    

    $profile is in 3 languages thats why it is a variable.

    гэты код IsNot працуе для мяне. гэта не паўтараючы нічога. Як я магу паўтарыць код PHP?

    1
    Вы можаце сашчапіць: рэха "
  • ". $ Профіля. "
  • ";
    дададзена аўтар andrewsi, крыніца

    9 адказы

    Проста выкарыстоўвайце канкатэнацыі аператара . , як гэта:

    echo "
  • " . $profile . "
  • ";
    
    4
    дададзена
    Я заўсёды задаваўся пытаннем, якая версія была яна, што была дададзеная падтрымка , у рэха-х?
    дададзена аўтар Ohgodwhy, крыніца
    Дзякуючы. Я не эксперт, але я цаню гэта.
    дададзена аўтар Ohgodwhy, крыніца
    @Ohgodwhy Гэта, верагодна, на некаторы час, рэха канструкцыя мовы не фактычная функцыя, таму я мяркую, так як рэха 's першай рэалізацыі. Там няма ніякіх зменаў да яго ў яго спіс змен у дакументацыі.
    дададзена аўтар nickb, крыніца
    if(isset($_SESSION['id'])){
    echo "
  • $profile
  • ";
    }else{
    echo "
  • login
  • ";
    }
    
    3
    дададзена

    У вас ёсць выбар. Вы можаце выкарыстоўваць падвойныя двукоссі ( ") або адзінкавыя двукоссі ( ) Розніца заключаецца ў тым, што падвойныя двукоссі не патрабуе канкатэнацыі .:


    Падвойныя двукоссі:

    echo "
  • $profile
  • ";
    

    Адзінарныя двукоссі:

    echo '
  • ' . $profile . '
  • ';
    
    3
    дададзена
    @PeterVR - падвойныя двукоссі, вядома, не заўсёды лепш для прадукцыйнасці, але гэты выбар з'яўляецца мікра-аптымізацыі, так як ні адно прыкладанне не можа калі-небудзь вузкае месца тут.
    дададзена аўтар nickb, крыніца
    <�Код> \ п , \ т , і г.д. з'яўляецца printet ацэншчык затым linebrak, ўкладка пры выкарыстанні '
    дададзена аўтар andlrc, крыніца

    Ўцёкі перакладчыка.

    echo "
  • ", $profile ,"
  • ";
    

    гэта ўсе.

    2
    дададзена
    На самай справе, гэта перадаючы радок, зменныя і радок у якасці параметраў. Гэта, мяркуюць, каб хутчэй канкатэнацыі радкоў, калі я правільна памятаю.
    дададзена аўтар Doug Dawson, крыніца
    +1 за косак!
    дададзена аўтар Doug Dawson, крыніца
    @rath ды гэта робіць.
    дададзена аўтар Ohgodwhy, крыніца
    Нягледзячы на ​​тое, што ён працуе, я лічу, гэта абазначэнне вельмі трывожным і ўводзіць у зман. Хіба гэта ўжо замінаючы досыць, каб выкарыстоўваць кропку для канкатэнацыі?
    дададзена аўтар Laurent S., крыніца
    Ці ёсць , работа як . у канкатэнацыі?
    дададзена аўтар rath, крыніца
    Звярніце ўвагу, што калі вы выкарыстоўваеце падвойныя двукоссі ( "), канкатэнацыя не з'яўляецца абавязковым :)
    дададзена аўтар Terry Harvey, крыніца

    Яшчэ адзін адказ патрэбны:

    <?php
        echo isset($_SESSION['id']) ? '
  • ' . $profile . '
  • ' : '
  • login
  • ';
    ?>
    
    2
    дададзена
    +1 за? : Аператар. Я люблю выкарыстоўваць яго!
    дададзена аўтар Doug Dawson, крыніца

    Гэта залішняя адказ, таму што ўсе астатнія ўжо сказаў, але вы сапраўды павінны пазбягаць друку HTML у PHP. Замест гэтага, выйсці з PHP, каб напісаць HTML:

    <?php if(isset($_SESSION['id'])): ?>
        
  • <?php echo $profile ?>
  • <?php else: ?>
        
  • login
  • <?php endif; ?>
    

    Не тое, што ён не працуе па-іншаму, гэта проста прыбіральнік гэты шлях ... па агульным меркаванні, я мяркую.

    2
    дададзена
    Я звычайна бяру гэта крок далей і ёсць метад PHP, які Інкапсулюйце праверку сеансу і вяртае радок, так і ў разметцы, ёсць толькі адзін выклік функцыі PHP і не, калі стан.
    дададзена аўтар Doug Dawson, крыніца
    Гэта не прыгожа, але я, як правіла, рабіць гэта таксама.
    дададзена аўтар Doug Dawson, крыніца
    Я думаю, што галоўнае ў тым, што не варта змешваць на боку сервера і на баку кліента.
    дададзена аўтар andlrc, крыніца
    Праўда. І бываюць выпадкі, калі гэта мае сэнс, каб выплюнуць трохі HTML у PHP, але ім мой досвед, я б сказаў, тыя часы, як мага бліжэй да нуля, так як ён можа атрымаць у аснове свету кліента.
    дададзена аўтар Kai Qing, крыніца
    у якім кантэксце вы маеце на ўвазе па групах? Што тычыцца хутчэй - кэш высновы. У любым выпадку, калі хуткасць апрацоўкі чагосьці, як гэта сапраўды мае значэнне, распрацоўшчыкі павінны рэалізацыі рыдара кэша замест прамой інтэрпрэтацыі. У адваротным выпадку, літаваць вочы любога падтрымае код. 99,9% участкаў па-за там настолькі малыя, што гэта не мае значэння, адзін біт.
    дададзена аўтар Kai Qing, крыніца
    @absolute - Я працую ў фірме з дзесяткамі распрацоўшчыкаў. Гэта офісны стандарт. Не толькі ад нас. Я сцвярджаў гэта ў першую, а таксама, але ў рэшце рэшт, я знаходжу гэта лягчэй чытаць. Хутчэй за ўсё, прычына часам код іншых людзей можа быць знешніх па вонкавым выглядзе і па меншай меры гэтыя заявы робяць яго лягчэй вызначыць, чым дужкі, усыпаных аб
    дададзена аўтар Kai Qing, крыніца
    Ну, я думаю, што было б пытаннем арганізацыі або перавагі ці нешта, таму што мы ніколі не адчуваюць праблемаў, вы маеце на ўвазе. Я да гэтага часу не разумею, як гэта будзе ўплываць на пераноснасць нічога так.
    дададзена аўтар Kai Qing, крыніца
    Я адчуваю вашу боль нуль. З дапамогай гэтых заўваг вы павінны былі атрымаць у спадчыну больш прагорклым код, чым нават у мяне ёсць. свет кліента, вы ніколі не ведаеце, што вы атрымаеце, і, хутчэй за ўсё, гэта будзе дрэнна. Толькі ў маіх кашмарах я павінен быў мець справу з сумесямі, як вы кажаце, - ці, па меншай меры, усё ўключана. Тым не менш, я магу аптымізаваць код ўсё, што я хачу. Калі дызайнер робіць нелагічны spritesheet гэта зводзіць на няма часу загрузкі, а таксама. У большасці выпадкаў, час загрузкі гэтых сайтаў я працую на самай справе не з'яўляецца праблемай, ці, па меншай меры, яны не выклікаюць пытанняў.
    дададзена аўтар Kai Qing, крыніца
    Калі убудаваны jQuery , Javascript , xml , HTML 4 і XHTML усе перамяшаныя з PHP гэта робіць яго цяжэй сачыць візуальна. Калі гэта толькі PHP і адзін стандартны HTML гэта павінна быць добра.
    дададзена аўтар AbsoluteƵERØ, крыніца
    Вы ведаеце, што, думаючы пра гэта з іншага пункту гледжання любога выйгрыш у прадукцыйнасці на сэрвэры можа быць лёгка знішчаны павольнымі злучэннямі прапускной здольнасці на баку карыстальніка рэчаў. Калі сервер не атрымлівае Вар'яцка колькасці высокага трафіку гэта не будзе праблемай.
    дададзена аўтар AbsoluteƵERØ, крыніца

    Так як вы карыстаецеся двайны " s радок будзе апрацоўвацца без канкатэнацыі.

    echo "
  • $profile
  • ";
    

    Вы можаце сашчапіць, калі вы маеце справу з коштамі ў валюце ЗША, дзе вам трэба б $ сімвал літаральным. Але на самой справе няма ніякай неабходнасці за межамі чытальнасці кода.

     echo 'Price: $'.$profile;
    

    Код, як гэта дае вам магчымасць рабіць праверкі на ўтрыманне, якая пацвярджае інфармацыі і па-ранейшаму падтрымліваць дынамічную функцыянальнасць PHP. Прымаючы пад увагу, калі змяшаць HTML і PHP вы сутыкнецеся з праблемамі, дзе вы павінны перапісаць вялікія ўчасткі, каб зрабіць нешта дынамічнае ў будучыні.

    У ідэале вы павінны зрабіць усё, што ў PHP:

    <?php
    $mystring = "
      "; if(isset($_SESSION['id'])){ $mystring .= "
    • $profile
    • "; }else{ $mystring .= "
    • login
    • "; } $mystring .= "
    ";
    $page .= $mystring;
    
    if ($dynamic_site == 1){
     print $page;
    } else {
     //For static caching (much faster)
     fwrite ...
    } 
    ?>
    
    2
    дададзена
    if(isset($_SESSION['id'])){
    echo '
  • ' . $profile . '
  • ';
    }else{
    echo '
  • login
  • ';
    }
    
    1
    дададзена
    @Bartdude ... :)
    дададзена аўтар sAnS, крыніца
    кажучы рэха ...
    дададзена аўтар Laurent S., крыніца
    @bartdude - я толькі што атрымаў свой каментар. сапраўдны лол
    дададзена аўтар Kai Qing, крыніца

    Ваша памылка ў тым, што вы не можаце мець PHP тэгаў у PHP-тэгах.

    Калі вы выкарыстоўваеце падвойныя двукоссі, вы можаце проста ўключыць зменную непасрэдна ў радок.

    if(isset($_SESSION['id'])){
        echo "
  • $profile
  • ";
    }else{
        echo "
  • login
  • ";
    }
    

    Праблема вырашана.

    1
    дададзена