Schlüssel eines Arrays nur Integer möglich?

Hallo zusammen,

wie in meinem Titel schon zu erkennen ist schreibe ich gerade an einer Funktion in der ich ein Array der Form “sort[‘1.4’] = 1.5” erstellen will. Nun ist der Schlüssel des Arrays aber kein Integer und ich kriege daher eine Fehlermeldung. Wie krieg ich Postgres dazu das ich in den Keywerten eines Arrays Strings oder Fließkommawerte schreiben kann?

Habe schon im Internet gesucht aber nichts zu diesem Thema finden können. Ich hoffe ohr könnt mir hier helfen :wink:

Vielen dank für die Hilfe

Korrekt. Array-Indexe sind Integer.

Andreas

Also kann Postgres Arrays nur über Integer Schlüssel verwalten. Schade. Aber danke für die schnelle Antwort.

Gibt es einklich eine Programmiersprache oder sowas, wo ich Elemente in einem Array via Float-Offsets ansprechen kann? Irknwie fehlt mir grad die Vorstellungskraft dafür…

Vielleicht suchst Du ja auch ‘nur’ eine Tabelle mit u.a. einer float-Spalte, in der Du dann ganz normal suchst?

Andreas

Zum Beispiel in php ist es möglich, weiß nicht inwiefern für dich php eine Programmiersprache ist :wink:
Im großen und ganzen wollte ich die Schlüssel gern als String oder Float weil ich in einem Schritt Zahlenwerte sortiere, dann deren Ränge berechne. Und im Schritt 2 wieder durch die nicht sortierten Zahlenwerte laufe und mit deren zugehörigen Rängen rechnen will. Um deren Ränge zu finden müßt ich nun das Ränge-Array durchsuchen. Das wollt ich mir sparen und einfach den Wert als Schlüssel nehmen dann brauch ich nichts suchen.

In php z.B. sieht meine FUnktion wie folgt aus:

function rangcorrelation($x, $y){
 
...
  
  sort($sortx);
  sort($sorty);

  //Ränge von x berechnen
  $n=1;
  $sum=1;
  for($i=1;$i<=count($sortx);$i++){
    if($sortx[$i]==$sortx[$i-1]){
      $n++;
      $sum = $sum+$i+1;
    }else{
      $rangx[''.$sortx[$i-1].''] = $sum / $n;
      $n=1;
      $sum=$i+1;
    }
  }
  
  //Ränge von y berechnen
  ...

  //Summe der Quadrate der Differenzen der Ränge  

  $sum=0;
  for($i=0;$i<count($x);$i++){
    $sum = $sum + (($rangx[''.$x[$i].''] - $rangy[''.$y[$i].'']) * ($rangx[''.$x[$i].''] - $rangy[''.$y[$i].'']));
  }
  
  //r selbst berechnen
  $n = count($x);
  $r = 1 - ((6*$sum) / ($n*($n*$n-1))); 
  
  return $r;
}
 

Höhere Programmiersprachen können Arrays auch schon mal über etwas anderes als die Indexnummer ansprechen.

In PHP kann dies ein String sein, wobei PHP hier Indexnummer und Keyname wild mixt.
Perl z.B. trennt dies in Arrays (numeriert) und Hashes (mit Key).

Ja, schon klar, mit Keyname ist schon klar. Aber das 3.14159265358979 Element ?

Andreas

Kommt drauf an, ob du das als String betrachtest oder nicht.