webForumDet fria alternativet

Associativa arrays/maps

PHPur PHP

2 svar · 889 visningar · startad av casca

cascaMedlem sedan feb. 20005 891 inlägg
#1

Kör en query mot en databastabell som ger detta resultat:

T1 	T2
1 	2
0 	3
2 	0
3 	1
3 	2
1 	0

När jag sen vill proppa in detta data i en associativ array, dvs. T1 => T2, så blir det tokfel?

	function getMapData($query) // returnerar data som associativ array (map)
	{
		global $dbhost, $dbname, $dbuser, $dbpassword;

		mysql_connect($dbhost, $dbuser, $dbpassword);
		mysql_select_db($dbname);

		$result = mysql_query($query);
		
		while( $row = mysql_fetch_row($result) )
			$queryresults[$row[0]] = $row[1];
		
		mysql_close();
	
		return $queryresults;
	}

Med print_r får jag följande resultat:

Array
(
    [1] => 0
    [0] => 3
    [2] => 0
    [3] => 2
)

Vilket är helt off? Har testat SQL-satsen direkt, den funkar. När jag kör

echo $row[0] ." ". $row[1]."<br />";

istället för $queryresults[$row[0]] = $row[1]; så blir resultatet "rätt":

1 2
0 3
2 0
3 1
3 2
1 0

Hur får jag kolumn T1 som "nyckelvärde" i arrayen? Och varför blir resultatet helt uppåt väggarna, inte bara för kort utan också felaktigt data?

Nate.AMedlem sedan mars 2006296 inlägg
#2

$row[0] har inte unika värden, du skriver ju över värdet i arrayen om det redan finns.

cascaMedlem sedan feb. 20005 891 inlägg
#3

Fan, det är sant. Hm, får klura vidare...

132 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)