Daži pārbaudes jautājumi PHP iesācējiem

Izdomāju, ka varētu uzdot dažus pārbaudes jautājumus tiem, kas vēl nav profesionāļi PHP. Protams, arī profesionāļi var atrisināt viņus, bet viņiem šie jautājumi varētu šķist pārāk elementāri. Taču tādam, kas ar PHP tikai sāk strādāt, saprašana kā strādā tālāk dotie piemēri, var palīdzēt tālākās gaitās.

No sākuma būs doti jautājumi (uzdevumi) un paņemot lasīt rakstu tālāk būs pieejamas atbildes. Ja gadījumā kādai atbildei nepiekrītat vai arī nesaprotat kāpēc ir tieši tā kā es saku, droši jautājiet. Un jā – atbildes skatieties tikai tad, kad būsiet izdomājuši savas atbildes, jo pretējā gadījumā uzdevumiem nebūs tāds efekts, kādam vajadzētu būt.

1) Kura darbība strādā ātrāk: $i--; vai --$i;?

2) $a = false;
$b = true;
$x = $b and $a;
$y = $b && $a;

Kādas ir $x un $y vērtības?

3) $a = array('34');
foreach($a as $key => $value)
{
$value = $key * 2 * $value;
}

Kāda ir $a[0]; vērtība?

4) $i = 5;
$x = 0;
while($i > 0)
{
$x += --$i;
}

Kāda ir $x vērtība?

Atbildes:

1) --$i strādā ātrāk par $i--;

2) $x == true; $y == false;

3) 34

4) 10

9 comments

  1. Par ātrdarbību nezinu, bet –$i dekrementējas pirms darbības, taču $i– pēc darbības.
    Pamēģini:
    $i = 5;
    echo “tagad skatamies: “.$i–;
    echo “tagad skatamies: “.–$i;

  2. Tieši tā arī ir kā tu saki – viens strādā pirms, bet otrs pēc. Tāpēc jāskatās, ko kurā gadījumā var lietot.
    Par to ka atņemšana –$i ir ātrāks biju lasījis un arī pats testējis. Protams, ātrdarbības starpība nav liela, taču ir.

  3. Būtu jau jaukāk, ja tu nevis tikai iedotu pareizās atbildes, bet paskaidrotu kāpēc tās ir tieši tādas. Mani, piemēram, pārsteidza atbilde uz otro jautājumu. Es būtu teicis, ka abi mainīgie būtu bijuši false. Izrādās, ka vainīga ir operatoru prioritāte…

  4. Man bija doma par to, ka varētu uzreiz rakstīt atbildes. Bet tad es pārdomāju. Iemesls tam ir pavisam vienkāršs – es gribēju redzēt vai tas kādam interesē. Un ja kāds būtu pajautājis (tagad vai pēc mēneša) es būtu komentāros paskaidrojis kāpēc ir tā kā ir. Sākumā jau rakstīju, ka var droši jautāt. :)

    Un jā – otrajā gadījumā tieši operatoru prioritāte ir pie vainas. Un var smalki iekrist. Jo it kā && un “and” dara vienu un to pašu, taču ir nelielas neianses, kuras reizēm var būt ļoti grūti pamanāmas, kad tiek meklētas kādas skriptu kļūdas.

  5. Tie pirmie divi jautājumi kaut kā nesader kopā ar pēdējiem diviem. Pirmos, lai atbildētu, ir jāpārzina valodas nianses (tātad jau pat vairs neattiecas uz iesācējiem), bet trešais un ceturtais vairāk ir kā atjautības jautājumi. Tie gan iesācējiem būtu pa spēkam.

  6. Vispār andrisp tev ir taisnība. Ja taisīšu nākamo jautājumu rakstu, tad mēģināšu nedaudz vairāk piedomāt pie tā, kas tiešām ir jau nianses un kas it kā vienkāršas lietas.

  7. 3. jautajums nu ir paraaks nuubisks, protams ka bus 34, jo ieguuta ciklaa veertiba nekur tachu nepieskiraas. Ja vertiba butu pieskirta ciklaa ($a[$key] = $value), tad atbilde butu 0.

    Par pirmajiem diviem jautajumiem es piekritu andrisp, taas ir nianses un vispar ljoti reti kads sho izmanto. Es programmeju PHP 7 gadus un laikam ne reizi neesmu izmantojis “var1 = var2 and var3” vai “var1 = var2 && var3”

Atbildēt

Jūsu e-pasta adrese netiks publicēta.

This site uses Akismet to reduce spam. Learn how your comment data is processed.