Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP: Esimerkkikoodien toimivuus, PHP

asser [25.02.2015 17:27:11]

#

Mikähän siinä on että esimerkkikoodit, joita löytää netistä ei oikein koskaan tahdo toimia, ei ainakaan niinkuin pitäisi. Kun tässä alkoi opettelemaan php:a, ja etsimään esimerkkejä, joita harjoitella, niin siitä mitään tule kun ne esimerkit sitten toimikkaan. Esimerkiksi nyt tämä, jossa tehdään yksinkertainen kaksiulotteinen taulukko, sivustolta http://ict-world.net/php-yksi-ja-kaksiulottieset-taulukot-array-ja-niiden-tulostus/ :
(johtuuko se siitä että on tehty eri PHP:n versiolla kuin oma? Pitän pähkäilyn jälkeen muutin ’ -merkit " -merkeiksi ja lisäsin yhdet {} -merkit lisää ensimmäisen for silmukan jälkeen, jollain tapahtui haluttu tulostus, ainakin melkein, sillä enää puuttuu ne taulukon reunat, jotka siinä pitäisi olla. Mikä siis vialla?)

<?php
// 2 ulotteinen taulukko
//täytetään taulukko
for($rivi = 0; $rivi < 8; $rivi++)
{
for($sarake = 0; $sarake < 7; $sarake++)
$luvut[$rivi][$sarake] = rand(1,37);
}
//tulostetaan
echo ’<table style=”border: 1px solid black;”>';
foreach ($luvut as $riviarvo) {
echo ’<tr>';
foreach ($riviarvo as $sarakearvo) {
echo ’<td style=”border: 1px solid #006666; padding-left: 10px;padding-right: 10px;”>’. $sarakearvo . ’</td>';
}
echo ’</tr>';
}
echo ’</table>';
?>

Koodin lopputulos:

33	30	18	20	11	16	31
20	32	4	11	30	34	22
19	20	36	33	5	29	14
7	6	4	22	9	32	20
10	32	10	5	25	27	24
35	5	18	18	37	22	28
29	18	12	10	37	10	5
4	2	19	11	7	22	32

Mod. lisäsi kooditagit!

Metabolix [25.02.2015 17:38:20]

#

asser kirjoitti:

Mikähän siinä on että esimerkkikoodit, joita löytää netistä ei oikein koskaan tahdo toimia, ei ainakaan niinkuin pitäisi.

Osa PHP-koodeista on kopioitu nettiin jotenkin käsittämättömällä tavalla väärin, kuten nyt tuo löytämäsi, jossa on tavallisten PHP:ssä käytettävien ASCII-merkkien kanssa ihmeellisesti sekaisin erilaisia Unicode-heittomerkkejä ja -lainausmerkkejä. Tuo koodi luultavasti toimii, kun muutat lainausmerkit ja heittomerkit tavallisiksi ASCII-merkeiksi (" ja '). Tekemäsi muunnos (") ei taas ole mitenkään looginen.

Ongelmien ratkaisemista auttaa huomattavasti, jos opettelet itse kielen perusteet kunnolla (ettei tarvitse arvailla sulkujen paikkoja tai oikeita merkkejä) ja alat myös lukea PHP:n antamia virheilmoituksia silloin, kun koodi ei toimi. Kannattaa myös kehittää lähdekritiikkiä niin, ettei vahingossakaan kopioi noin rumalta sivulta noin huonon näköistä koodia (mm. sisennykset puuttuvat ja selitykset ovat täynnä kielioppivirheitä, eli tekijä ei varmaan ole kovin taitava).

Jotkin koodit myös tarvitsevat vanhentuneita, käytöstä poistuneita ominaisuuksia. Tällaiset koodit ovat yleensä muutenkin huonoja ja sisältävät esimerkiksi tietoturva-aukkoja tai suunnitteluvirheitä. Osa koodeista myös saattaa toimia vain tietyssä ympäristössä, ja usein tekijä itse ei edes ymmärrä koodinsa rajoituksia.

asser [25.02.2015 22:38:47]

#

Muutin niinkuin ehdotit, ja heti toimi niinkuin piti. Kiitos.
Sehän on tosiaan tavoitteena, että oppisi itse koodaamaan, mutta kun lähtötaso on niin kovin alhainen ja harjoittelu vasta aloitettu, niin en ole muuta johdonmukaista tapaa oppia keksinyt, kuin lukea nuo oppaat läpi ja yrittää valmiiden esimerkkien avulla harjoitella. Ottaa niistä esimerkeistä mallia ja tehdä jotain vastaavaa, muta sehän se syö miestä jos ei edes sitä esimerkkiäkään saa toimimaan.

Tukki [26.02.2015 12:02:16]

#

Alkeet voisi olla ihan hyvä opetella jostain perinteisestä kirjastakin. Ne kuitenkin yleensä käyvät edes jonkinlaisen laatuarvioinnin läpi ennenkuin päätyvät kansiin. Yhden kirjan opiskelun jälkeen kyky itsenäiseen lähdekritiikkiin on jo varmasti paljon parempi.

PHP:ssä on valitettavasti se ongelma että sillä on kirjoitettu hirveän paljon enemmän huonoa koodia kuin hyvää.

The Alchemist [26.02.2015 20:35:37]

#

Kaikilla kielillä on kirjoitettu paskaa ja varsinkin niillä kielillä, jotka olivat suhteellisen mainstreamia joskus vuosituhannen alkuvuosina. Mielestäni php:hen pitäisi nykyään suhtautua oliokielenä ja kirjoittaa sitä kuten oliokieltä. Se ehkäisee myös helposti suurimpia typeryyksiä, mitä php:n kanssa historiallisesti on tavattu tehdä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta