|
| Kommentar Fra : præceptor |
Dato : 29-10-06 07:33 |
|
Jeg kan ikke besvare dit spørgsmål, men undrer mig over formuleringen, at du tror det handler om en kodning i PHP.
I mine øjne ser det mere ud som et algoritmisk spørgsmål?
| |
|
præceptor -> Det skyldes, at jeg ikke vidste, om jeg skulle putte spørgsmålet i PHP eller MySQL-gruppen, men har du nogle idéer til, hvor jeg så kan lægge spørgsmålet
| |
| Accepteret svar Fra : Eckankar | Modtaget 75 point Dato : 29-10-06 23:42 |
|
Du kan fx bruge følgende:
Kode function shortPath($from, $to)
{
$queue = array($from);
$active = 0;
$prev = array();
$prev[$from] = 0;
while ( count($queue) > 0 )
{
$active = array_shift($queue);
$dbresult = mysql_query("SELECT * FROM `venner` WHERE `bruger` = $active OR `ven` = $active;");
while ($enven = mysql_fetch_assoc($dbresult))
{
$enven = ($enven['ven'] == $active ? $enven['bruger'] : $enven['ven']);
if (!empty($prev[$enven]))
continue;
$prev[$enven] = $active;
array_push($queue,$enven);
if ($enven == $to)
return backTrack($from, $to, $prev);
}
}
return "No path exists between $from and $to";
}
function backTrack($from, $to, $prev)
{
$output = array($to);
$active = $to;
while ($active != $from)
{
$active = $prev[$active];
array_unshift($output,$active);
}
return $output;
} |
Demonstation:
http://www.mathemaniac.org/php/venneting.php
(Kildekode: http://www.mathemaniac.org/php/venneting.php?source)
| |
|
Eckankar -> Jeg takker mange gange, for jeg har brugt omkring en måned om at tænke, hvordan det kunne lade sig gøre
| |
|
Ups, glemte at trykke på Accepter, men mange tak for svaret
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|