Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP:lla muuttuja vuorottelemaan

Sivun loppuun

Kostersson [23.12.2007 22:39:05]

#

Ongelmani on , etten saa seutaavaa koodia tulostamaan: 1 2 1 2 1 2 jne.

$i="0";
$a="1";
while(@mysql_result($haku, $i)!=NULL){
	echo"$a";

	if($a="2"){
		$a="1";
	}
	else{
		$a="2";
	}
	$i++;
}

Gaxx [23.12.2007 22:52:30]

#

Laita komento continue; $a="1":n jälkeen. Tällöin ohjelma hyppää while-silmukan alkuun

Kai php sisältää continuen...

Tapoja on monia, mutta kun en tunne kieltä niin en nyt lähde arvuuttelemaan enempää, miten sen voisi tehdä.

Dude [23.12.2007 22:54:44]

#

Gaxx kirjoitti:

Laita komento continue; $a="1":n jälkeen. Tällöin ohjelma hyppää while-silmukan alkuun

Kai php sisältää continuen...

kyllä PHPees on continue.

ajv [23.12.2007 22:54:50]

#

Tässä yhdenlainen ratkaisu:

<?php
$bit = false;
for($i=0; $i<10; $i++){
  echo $bit + 1;
  $bit = !$bit;
}

Metabolix [23.12.2007 23:01:37]

#

Alkuperäisen koodin ongelma on, että vertailussa kuuluisi olla == eikä =. Muutenhan se taitaa olla aivan pätevä.

Ongelmissa kannattaisi kertoa myös, mitä koodi nykyään tekee. Jos olisit kertonut, että se tulostaa vain ykkösiä, olisivat jo edelliset vastaajat varmasti huomanneet katsoa, että if-lauseessa on virhe.

Tässä vielä toisenlainen ratkaisu:

<?php
while (...) {
  echo 1 + ($i % 2); // Jakojäännös
  // Käänteinen tapaus: echo 2 - ($i % 2);
  ++$i;
}
?>

ajv [23.12.2007 23:04:41]

#

Mun ratkaisu on tehokkaampi :P

jlaire [23.12.2007 23:19:38]

#

Boolean-arvojen ja lukujen välillä vaihtelu tuskin on kovin tehokasta. Luultavasti olisi nopeampaa käyttää false:n sijasta nollaa ja !-operaattorin sijasta lauseketta $bit = 1 - $bit.

Metabolix [23.12.2007 23:25:45]

#

No laitetaan sitten vielä tehokkaampaa:

$n = 1;      // Alkuarvo
$n = 3 - $n; // Vaihto
###
3 - 2 = 1
3 - 1 = 2

T.M. [24.12.2007 00:01:00]

#

mun keino onki parempi ku teijän kaikkien yhteensä:

<?php

$data = array("1", "2");
$n = 0;
for($u = 0; $u < 10; $u++){
    print $data[$n];
    $n ^= 1;
}

?>

Kostersson [24.12.2007 11:04:51]

#

Joo, en tullut laittaneeksi niitä toisia "=" merkkejä. Tyhmä virhe multa, mutta kiitos nyt kumminkin.


Sivun alkuun

Vastaus

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

Tietoa sivustosta