Helppo ratkasu varmaan.
eli, vieraskirjaan pistetään kommentteja omalla nimimerkillä.
kuintekin jotkut peelot laittavat myös viestejä nimimerkkillä "Admin", ja ärsyttävät.
tähän itse kehitin sellaisen "salakoodin" jolla koodin abc123 saa vaihdettua Adminiksi, mutta siihen tarvisin vielä semmosen lisäyksen että jos joku postaa nimellä "Admin" se vaihtuu vaikka pelleksi.
<?php if($nick == "abc123"){ $nick = "Jorma"; }
kokelin itse lisätä jotenkin näin elseiffiä sinne:
kiitän avusta
elseif noin kirjoitettuna antaa minulla ainakin virheen. Oikea muoto on else if. Koitappas näin:
jeesh. kiitti
PHP:ssä se on kyllä "elseif", eikä "else if". Se että "elseif" antaa Macrolla virheen on kyllä kovin omituinen juttu... xD Nähtävästi kuitenkin "else if":kin toimii, joten hällä väliä.
Switch-lause kunniaan.
Ehkei Macro ymmärtänyt lisätä puuttuvaa aaltosulkua loppuun.
Muoks: Jos korvattavia nimimerkkejä on useita, tekisin itse arraylla:
<?php $nick = "Admin"; $korvaukset = array("abc123" => "Admin", "Admin" => "Pelle"); if (array_key_exists($nick, $korvaukset)) { $nick = $korvaukset[$nick]; }
<?php $nick = $_POST['nick']; $nickit = array(array('Admin', 'abc123'), array('Pelle', 'Admin')); $nick = str_replace($nickit[0], $nickit[1], $nick); ?>
Kaipa tän voi aika monella tapaa tehdä, ole varuillasi jos käytät tuota postaamaani sillä:
<?php // Tulostaa F:n koska A korvataan B:llä, B korvataan C:llä, jne... // F tulee siis siksi koska arvot on laitettu järjestykseen vasemmalta oikeelle // (Sama koodinpätkä php.net:stä) $search = array('A', 'B', 'C', 'D', 'E'); $replace = array('B', 'C', 'D', 'E', 'F'); $subject = 'A'; echo str_replace($search, $replace, $subject); ?>
jo123 kirjoitti:
PHP:ssä se on kyllä "elseif", eikä "else if". Se että "elseif" antaa Macrolla virheen on kyllä kovin omituinen juttu... xD Nähtävästi kuitenkin "else if":kin toimii, joten hällä väliä.
Molemmat ovat oikein manuaalin mukaan.
Chiman kirjoitti:
Ehkei Macro ymmärtänyt lisätä puuttuvaa aaltosulkua loppuun.
En voinut edes kuvitella, että joku saa aikaan noin tyhmän virheen eikä osaa korjata. Kun virheestä ei mainittu mitään, niin tein sen miten se omalla palvelimellani toimi.
jo123 kirjoitti:
PHP:ssä se on kyllä "elseif", eikä "else if".
PHP:ssä on todella erillinen sana elseif. Ei kuitenkaan ole millään tavalla väärin kirjoittaa else if, jossa siis on else-lohko ja sen sisällä if-lause. Ilmaisuilla ei sinänsä ole mitään eroa, mutta jos käytetään PHP:n vaihtoehtoista syntaksia, täytyy muistaa sisentää jälkimmäinen if-lause:
mikä ihmeen endif? mistä lähtien tuollaista on php:ssä käytetty? Vai onko kyseessä php.net?
vehkis91 kirjoitti:
mikä ihmeen endif? mistä lähtien tuollaista on php:ssä käytetty? Vai onko kyseessä php.net?
https://www.php.net/manual/en/control-structures.alternative-syntax.php
Ja miksi ihmeessä täytyy olla "kaikki mahdolliset" syntaksit mahdollisia? On se php ihme kieli... :D
Edit: Mahtaakohan muuten "elseif":n ja "else if":n nopeuksissa olla eroja? :p
Mainittu vaihtoehtoinen syntaksi on selkeä, kun sekoitetaan sivupohjaan yksinkertaisia PHP-lausekkeita, ts. templateissa.
<?php if (isAdmin()): ?> <ul> <?php foreach ($users as $user): ?> <li><?php echo $user; ?></li> <?php endforeach; ?> </ul> <?php endif; ?>
Elseif vaikuttaisi olevan minimaalisesti nopeampi (10000 kiekkaa, ~5ms), mutta sen tuoma tärkeämpi etu on koodin selkeys.
tsuriga kirjoitti:
, mutta sen tuoma tärkeämpi etu on koodin selkeys.
Tämäkin etu on kyllä tasan yhtä minimaalinen.
Edit: No myönnetään ehkä että se on kaksi jo123:n tärkeysyksikköä tärkeämpi. O.O
Katsopa uudestaan Metabolixin esimerkkiä ja mieti eroa koodin sisennyksissä vaikkapa jo toisen elseif
/else if:n
kohdalla, varsinkin jos ollaan jo valmiiksi metodin sisällä. Toki voidaan argumentoida, että toimintalogiikkaa olisi jo ehkä aika jakaa useammalle toimitsijalle (funktio/metodi/luokka) jos sisennystasoja alkaa olla hankalan paljon. Molemmat merkintätavat ovat syntaksiltaan aivan hyväksyttyjä, mutta semanttisestihan nämä eroavat toisistaan. Else if:n
käyttö on hyvin perusteltua, kun halutaan suorittaa jokin toiminto aina kun ei päästä ensimmäisen vertailulohkoon sisään. Elseif
-rakenteella tuo toiminto jouduttaisiin toistamaan koodissa. Esim.:
<?php /* else if */ if ($id === 1) { echo 'Admin'; } else { // Suoritetaan em. toiminto echo 'Not an admin'; if ($id === 2) { echo '... but an admin in training!'; } } /* elseif */ if ($id === 1) { echo 'Admin'; } elseif ($id === 2) { echo 'Not an admin'; echo '... but an admin in training!'; } else { echo 'Not an admin'; // turhaa toistoa } ?>
Aihe on jo aika vanha, joten et voi enää vastata siihen.