Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ja taulukot

Sivun loppuun

cryo [18.12.2010 12:46:48]

#

Moi!
Tietääkö kukaan miten PHP:llä saa kätevästi luotua moniulotteisen taulukon? Tuo PHP-oppaan taulukkoesimerkki ei oikein uponnut. Tarkoitus olisi siis löytää samanlainen funktio kuin VisualBasicissa on ARR(T) (ja sen perään voi laittaa vaikka 10 eri ulottuvuutta vaikka taulukkolaskennathan eivät tunne kuin kaksi, sarakkeet ja rivit.) Pitäisi saada kaksiulotteinen taulukko siten että taulukkoon ensin ladataan omiin sarakkeisiinsa laskennan reunaehtoja ja osaan sarakkeista sitten lasketaan ja päivitellään laskenta-algoritmin laskemia arvoja.

LaNu [18.12.2010 13:21:55]

#

Eiköhän nämä PHP:n taulukot taivu ihan luonnostaan tuohon:

<?php
$taulut = array( array( array( 1, 2 ), 3 ));
$taulut[]=4;
$taulut[0][]= array( 5 );
$taulut[0][0][0]=6;
?>
<pre>
<?php print_r( $taulut ); ?>
</pre>

Eli pistät vaan sinne taulukon alkioiksi taulukoita tarpeen mukaan.

Antti Laaksonen [18.12.2010 15:50:22]

#

PHP:ssä taulukkoa ei tarvitse erikseen luoda, vaan sitä voi alkaa käyttää suoraan:

<?php
$taulu[3][7] = 11;
$taulu[5][2] = 8;
$taulu[4][6] = $taulu[3][7] + $taulu[5][2];
echo $taulu[4][6]; // 19
?>

cryo [18.12.2010 16:10:10]

#

FAQ/KVG (Kato V***u Googlesta) kymysys, voiko tuonne hakasulkujen (vaikka [4][6]) sisään viitata $muuttujalla? Kyseessä kun on silmukat jotka laskee, laskee ja laskee taulukon arvoja kunnes saavat mieleisen lopputuloksen.

makumaku [18.12.2010 16:50:43]

#

cryo kirjoitti:

FAQ/KVG (Kato V***u Googlesta) kymysys, voiko tuonne hakasulkujen (vaikka [4][6]) sisään viitata $muuttujalla?

TRUE

Voisi kai aikalailla yleistäen sanoa että jos VisualBasic on tuttu, niin PHP:ssä voit tehdä taulukoilla kaikki samat jutut aivan yhtä helposti.

LaNu [18.12.2010 17:26:25]

#

Antti Laaksonen kirjoitti:

PHP:ssä taulukkoa ei tarvitse erikseen luoda, vaan sitä voi alkaa käyttää suoraan

Ei koodia kommentoidakaan tarvitse. Tai nimetä muuttujia selkeästi.

array-funktio on selkeä markkeri, joka kertoo että siinä kohtaa taulukko luodaan. Jos sen tilalla on suoraan taulukko-operaatio, joudut käymään aiemman koodin läpi tietääksesi onko kyse uudesta taulukosta vai ei.

Antti Laaksonen [18.12.2010 18:14:06]

#

Totta, tämä on ihan hyvä merkintä:

<?php
$taulu = array();
// taulukon käyttäminen
?>

Metabolix [18.12.2010 23:31:36]

#

Antti Laaksonen kirjoitti:

PHP:ssä taulukkoa ei tarvitse erikseen luoda, vaan sitä voi alkaa käyttää suoraan

Jos kuitenkin palvelimella on register_globals käytössä, taulukon suora käyttäminen on tietoturvariski. Kuvitellaanpa seuraava koodi:

<?php
$yllapitajat[] = "Antti Laaksonen";
$yllapitajat[] = "Metabolix";

if (in_array($nimi, $yllapitajat)) {
  $admin = true;
} else {
  $admin = false;
}

Hakkeri voi kirjoittaa seuraavan osoitteen:

sivu.php?yllapitajat[]=HakkerinTunnus

Jos register_globals on käytössä, hakkerin tunnus päätyykin tuohon samaan $yllapitajat-taulukkoon ja hän saa ylläpitäjän oikeudet.

Kaikki muuttujat kannattaa siis alustaa – ei pelkästään hyvän tavan vuoksi vaan myös virheiden ja jopa tietoturva-aukkojen välttämiseksi.


Sivun alkuun

Vastaus

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

Tietoa sivustosta