/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Array-udskrivning
Fra : Jens


Dato : 17-05-05 11:33

Dette driller mig - har dette array som indeholder et lige antal hold( i
dette eks. 4);
Array ( [0] => Array ( [holdID] => 45 [holdNavn] => Hold1 [vundne] => 2
[kampe] => 3 [scorePos] => 28 [scoreNeg] => 33 ) [1] => Array ( [holdID] =>
44 [holdNavn] => Hold2 [vundne] => 2 [kampe] => 3 [scorePos] => 32
[scoreNeg] => 21 ) [2] => Array ( [holdID] => 50 [holdNavn] => Hold3
[vundne] => 3 [kampe] => 3 [scorePos] => 33 [scoreNeg] => 9 ) [3] => Array
( [holdID] => 49 [holdNavn] => Hold4 [vundne] => 2 [kampe] => 3 [scorePos]
=> 22 [scoreNeg] => 22 ) )

Jeg gerne have echoet nogle nye kampe ud af det ovenstående array;
hold1 VS hold4
hold2 VS hold3

Men hvordan? Har prøvet nedenstående hvilket jo ikke holder. Løsningen skal
gerne være generisk og fungere uafhængigt af hvor mange kampe der skal
genereres Skal jeg hive fat i noget modulos ell. skal mit array
manipuleres? Hjælp mig :/
for($v = 0; $v < $antalKampe; $v++){ // antalKampe = 2 (4 hold => 2 kampe)
echo $value[$v]['holdNavn']." vs ". $value[$v+2]['holdNavn'];
}


Håber i kan give mig lidt guiding.


Mvh.

Jens





 
 
Johan Holst Nielsen (17-05-2005)
Kommentar
Fra : Johan Holst Nielsen


Dato : 17-05-05 12:22

Jens wrote:
> Dette driller mig - har dette array som indeholder et lige antal hold( i
> dette eks. 4);
> Array ( [0] => Array ( [holdID] => 45 [holdNavn] => Hold1 [vundne] => 2
> [kampe] => 3 [scorePos] => 28 [scoreNeg] => 33 ) [1] => Array ( [holdID] =>
> 44 [holdNavn] => Hold2 [vundne] => 2 [kampe] => 3 [scorePos] => 32
> [scoreNeg] => 21 ) [2] => Array ( [holdID] => 50 [holdNavn] => Hold3
> [vundne] => 3 [kampe] => 3 [scorePos] => 33 [scoreNeg] => 9 ) [3] => Array
> ( [holdID] => 49 [holdNavn] => Hold4 [vundne] => 2 [kampe] => 3 [scorePos]
> => 22 [scoreNeg] => 22 ) )
>
> Jeg gerne have echoet nogle nye kampe ud af det ovenstående array;
> hold1 VS hold4
> hold2 VS hold3
>
> Men hvordan? Har prøvet nedenstående hvilket jo ikke holder. Løsningen skal
> gerne være generisk og fungere uafhængigt af hvor mange kampe der skal
> genereres Skal jeg hive fat i noget modulos ell. skal mit array
> manipuleres? Hjælp mig :/
> for($v = 0; $v < $antalKampe; $v++){ // antalKampe = 2 (4 hold => 2 kampe)
> echo $value[$v]['holdNavn']." vs ". $value[$v+2]['holdNavn'];
> }

Noget ala dette burde virke:

<?php

function getRand($teams) {
srand((float)microtime()*10000000);
return array_rand($teams);
}

$antalKampe = 2;

$value = array(dine orginaldata);

$teams = $value; //Kopi så vi kan arbejde med det
for($i=0;$i<$antalKampe;$i++) {
$r = getRand($teams);
echo $teams[$r]['holdNavn']
unset($teams[$r]);
echo ' vs ';
$r = getRand($teams);
echo $teams[$r]['holdNavn']
unset($teams[$r]);
echo '<br>';
}
?>

Så kan du selv smide noget ind og ud af funktionerne.

mvh
johan

Jens (17-05-2005)
Kommentar
Fra : Jens


Dato : 17-05-05 12:39

Mange tak, Johan., men ikke helt det jeg leder efter, da det ikke er random,
men specifikt [0] vs [2] og [1] vs [3]. Må prøve at tweake lidt...

"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse
news:4289d3c2$0$79463$14726298@news.sunsite.dk...
> Jens wrote:
>> Dette driller mig - har dette array som indeholder et lige antal hold( i
>> dette eks. 4);
>> Array ( [0] => Array ( [holdID] => 45 [holdNavn] => Hold1 [vundne] => 2
>> [kampe] => 3 [scorePos] => 28 [scoreNeg] => 33 ) [1] => Array ( [holdID]
>> => 44 [holdNavn] => Hold2 [vundne] => 2 [kampe] => 3 [scorePos] => 32
>> [scoreNeg] => 21 ) [2] => Array ( [holdID] => 50 [holdNavn] => Hold3
>> [vundne] => 3 [kampe] => 3 [scorePos] => 33 [scoreNeg] => 9 ) [3] =>
>> Array ( [holdID] => 49 [holdNavn] => Hold4 [vundne] => 2 [kampe] => 3
>> [scorePos] => 22 [scoreNeg] => 22 ) )
>>
>> Jeg gerne have echoet nogle nye kampe ud af det ovenstående array;
>> hold1 VS hold4
>> hold2 VS hold3
>>
>> Men hvordan? Har prøvet nedenstående hvilket jo ikke holder. Løsningen
>> skal gerne være generisk og fungere uafhængigt af hvor mange kampe der
>> skal genereres Skal jeg hive fat i noget modulos ell. skal mit array
>> manipuleres? Hjælp mig :/
>> for($v = 0; $v < $antalKampe; $v++){ // antalKampe = 2 (4 hold => 2
>> kampe)
>> echo $value[$v]['holdNavn']." vs ". $value[$v+2]['holdNavn'];
>> }
>
> Noget ala dette burde virke:
>
> <?php
>
> function getRand($teams) {
> srand((float)microtime()*10000000);
> return array_rand($teams);
> }
>
> $antalKampe = 2;
>
> $value = array(dine orginaldata);
>
> $teams = $value; //Kopi så vi kan arbejde med det
> for($i=0;$i<$antalKampe;$i++) {
> $r = getRand($teams);
> echo $teams[$r]['holdNavn']
> unset($teams[$r]);
> echo ' vs ';
> $r = getRand($teams);
> echo $teams[$r]['holdNavn']
> unset($teams[$r]);
> echo '<br>';
> }
> ?>
>
> Så kan du selv smide noget ind og ud af funktionerne.
>
> mvh
> johan



Johan Holst Nielsen (17-05-2005)
Kommentar
Fra : Johan Holst Nielsen


Dato : 17-05-05 13:12

Jens wrote:
> Mange tak, Johan., men ikke helt det jeg leder efter, da det ikke er random,
> men specifikt [0] vs [2] og [1] vs [3]. Må prøve at tweake lidt...

Hej Jens,

I så fald skal jeg have lidt mere information? Hvad hvis der er 6 hold?

Er det så

0 vs 3
1 vs 4
2 vs 5

eller hvorledes?

Mere for at få skabt det rigtige... i så fald burde noget så simpel som
dette virke.

<?php

$teams = array(dine data); //bemærk skal være 0, 1, 2, 3, ...

*/
vi forventer at der altid er et lige antal - og at der altid kun er 2
hold i en kampe
*/

$antalKampe = (sizerof($teams)/2);

for($i=0;$i<$antalKampe;$i++) {
echo $teams[$i]['holdNavn'];
echo " vs ";
echo $teams[($i+$antalKampe)]['holdNavn'];
}

?>

mvh
Johan

Jens (17-05-2005)
Kommentar
Fra : Jens


Dato : 17-05-05 13:23

Mange tak for dit input, har fået lavet en løsning bestående af "gejl 40",
modulos og et par if'er. Jeg vil lige se på din løsning og prøve at forenkle
min egen.



"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse
news:4289dfa4$0$79460$14726298@news.sunsite.dk...
> Jens wrote:
>> Mange tak, Johan., men ikke helt det jeg leder efter, da det ikke er
>> random, men specifikt [0] vs [2] og [1] vs [3]. Må prøve at tweake
>> lidt...
>
> Hej Jens,
>
> I så fald skal jeg have lidt mere information? Hvad hvis der er 6 hold?
>
> Er det så
>
> 0 vs 3
> 1 vs 4
> 2 vs 5
>
> eller hvorledes?
>
> Mere for at få skabt det rigtige... i så fald burde noget så simpel som
> dette virke.
>
> <?php
>
> $teams = array(dine data); //bemærk skal være 0, 1, 2, 3, ...
>
> */
> vi forventer at der altid er et lige antal - og at der altid kun er 2 hold
> i en kampe
> */
>
> $antalKampe = (sizerof($teams)/2);
>
> for($i=0;$i<$antalKampe;$i++) {
> echo $teams[$i]['holdNavn'];
> echo " vs ";
> echo $teams[($i+$antalKampe)]['holdNavn'];
> }
>
> ?>
>
> mvh
> Johan



Johan Holst Nielsen (17-05-2005)
Kommentar
Fra : Johan Holst Nielsen


Dato : 17-05-05 13:34

Jens wrote:
> Mange tak for dit input, har fået lavet en løsning bestående af "gejl 40",
> modulos og et par if'er. Jeg vil lige se på din løsning og prøve at forenkle
> min egen.

Hvis det er således at der med 4 hold skal væs 0 vs 2, 1 vs 3, og ved 6
det er 0 vs 3, 1 vs 4, 2 vs 5 osv. så burde koden jeg skrev være noget
af det mest enkle - udover jeg har stavet "sizeof" forkert - og du kan
sammenpresse et par af linjerne (i for løkken er der ingen grund til 3
echo'er - men det er mere pga. formatteringen i nyhedsgruppen jeg gjorde
det)

Men ellers held og lykke med projektet :)

mvh
Johan

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste