WebHU - Programozási kérdések és válaszok

PHP elemzési hiba: szintaktikai hiba, váratlan ':' [zárva]

Sokáig valami ilyesmit használtam:

$foo = $foo ?: $bar; // similar to $foo = $foo ? $foo : $bar;

és jól működött.

de most egy új tárhelyen vagyok a PHP 5.2.17 verziójával, és amikor hasonló kódot próbálok futtatni, elemzési hibát mutat:

Parse error: syntax error, unexpected ':' in /../

Hogyan tudom ezt megoldani?

08.02.2013

  • A C# nem engedélyezi a rövidebb szintaxist a példádban. 08.02.2013
  • @MikedeKlerk ez PHP, nem C# 08.02.2013
  • A stackoverflow.com/ lehetséges ismétlődése kérdések/6277222/ 08.02.2013
  • @John ismertem, ezért becsüld meg a PHP-vel kapcsolatos szabadságot! A PHP különböző verziói, különböző szabadsági fokok, egy kicsit keverednek ide-oda, és hirtelen a bool karakterlánc lesz, és tizedesjegyként használják! A PHP nagyszerű! 08.02.2013

Válaszok:


1

A rövidített hármas szintaxis csak a PHP 5.3 és újabb verziókban érhető el

08.02.2013
  • Kösz! Frissítettem a PHP verziót 5.3-ra és működik. Nagyon köszönöm :) 08.02.2013

  • 2
    Please note that the ternary operator is a statement, and that it
    doesn't evaluate to a variable, but to the result of a statement. This
    is important to know if you want to return a variable by reference.
    The statement return $var == 42 ? $a : $b; in a return-by-reference
    function will therefore not work and a warning is issued in later PHP
    versions.
    
    So there is a problem with the return-by-reference for the ?: syntax.
    That's way I explicitly wrote what should be returned. 
    

    Referenciawebhely https://groups.google.com/forum/#!msg/doctrine-user/qbSAvaKH5uI/DF_2XSxFvG4J

    Nem mondhatom, hogy volt benne bug, de a https://bugs.php.net/bug.php?id=60169 úgy tűnik, hogy bug

    there is also segfault in (***)?:value notation.
    like:
       <?php
         $str = array('test');
         list($a, $b) = is_array($str)?:$str;
    
    and this make *the patch doesn't work* (a memory leak)
    
    08.02.2013
    Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..