Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Korvaa arrayn elementti

joah [28.08.2014 19:59:53]

#

Hei, olen surkea PHP:ssä arrayiden kanssa (niinkuin muussakin), ja jäin tälläiseen ongelmaan:

<?php
$sentit = range(0, 90);
foreach($sentit as $sentti) {
$oikeaSentti = $sentti . "cm";
etsiKorvaaArray($sentti, $oikeaSentti, $sentit); // Alkuperäinen, uusi/tulveva, array
}
?>

Eli mikä tämä etsiKorvaaArray-funktio olisi? Tarkoituksena olisi tehdä array rangella tietty määrä senttimetrejä, ja saada lisättyä cm-kirjaimet perään. Myöhemmin olisi myös tarkoituksena katsoa if-ehdolla, että jos on esim. 1010 tulisi 10m 10cm. Nyt tulisi (vielä) 1010cm.

Loppuenlopuksi käytän tätä yhdessa jpgraphicsin kanssa, jotta voin piirtää joen syvyyden graafisesti.

Kiitos jo etukäteen! :)

Teuro [28.08.2014 20:20:18]

#

Käy taulukko läpi for-rakenteella ja lisää jokaisella kierroksella arvon perään haluamasi teksti.

<?php
$sentit[$i] .= "cm";

-tossu- [28.08.2014 20:35:01]

#

Sama foreach-simukalla, joka kysyjällä oli käytössä:

$sentit = range(0, 90);
foreach ($sentit as &$sentti)
	$sentti .= "cm";

Rangella luotu taulukko vaikuttaa kuitenkin olevan huono ratkaisu. Miksi haluat luodan taulukon, jonka sisältö on vakio?

joah [28.08.2014 20:37:37]

#

Mittasimme erään joen syvyyden 10 cm välein, ja olen tekemässä datasta graafista. Kuitenkin joki oli noin 18m pitkä, joten tyydyin 1m välein olevaan taulukkoon, jolloin pystyin tekemään arrayn helposti (array("0cm", "1m", "2m") jne).

-tossu- [28.08.2014 20:51:03]

#

Samalla vaivallahan siihen olisi laittanut senttimetritkin haluamallasi tavalla:

$luvut = range(0, 20);
$kohdat = array();
foreach ($luvut as $s) {
	$metrit = (int) ($s / 100);
	$sentit = $s % 100;
	$osat = array();
	if ($s == 0)
		$osat[] = "0cm";
	if ($metrit > 0)
		$osat[] = $metrit . "m";
	if ($sentit > 0)
		$osat[] = $sentit . "cm";
	$kohdat[] = join(" ", $osat);
}

The Alchemist [29.08.2014 20:55:09]

#

Graafin akselin kaikilla arvoilla olisi hyvä olla sama yksikkö, eli ilmoita kaikki arvot joko metreinä tai sentteinä, vaikka ne sitten menisivät yli ala-asteella opetetuista muuntoraja-arvoista (100 cm = 1 m jne.)

Vastaus

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

Tietoa sivustosta