Hey Jungs Entschuldigung für Ihre Zeit, aber ich habe zu einer seltsamen Situation geraten. Ich habe eine Datenbank, wo ich Koordinaten (php & mysql) mit Namen speichern. Wenn jemand nach etwas sucht, läuft ein PHP-Skript und speichert die Abfrage in 3 verschiedenen Variablen, die von einem Array-Typ sein sollten. Dann benutze ich JavaScript, um diese PHP-Arrays in JavaScript zu konvertieren. Die Koordinaten sind ok, aber die Namen sind vom Typ string, wenn ich versuche, split() -Funktion gibt es Fehler, weil es ein Array ist (wie ich nach der Suche verstehe). Die andere Ungerade ist, wenn ich console.log den Typ des Namens sagt String, aber wenn ich in Quellen suchen wird es wie ein Array angezeigt.ungerade Javascript/PHP Variable Typ
var lon = <?php echo '["' . implode('", "', $lon) . '"]' ?>;
var lat = <?php echo '["' . implode('", "', $lat) . '"]' ?>;
var name = <?php echo '["' . implode('", "', $name) . '"]' ?>;
der Ausgang in Quellen Register (Chrom)
var lon = ["39.070200", "39.072365", "39.064469"];
var lat = ["21.018064", "21.017744", "21.000059"];
var name = ["Saint Dimitrios", "Saint Charalampos", "Saint Kosmas"];
und dann für die Konsole
console.log(lon);
console.log(typeof lon);
console.log(typeof name);
die tatsächliche Ausgabe in Konsole
["21.018064", "21.017744", "21.000059"] //which when I click it identifies it as an array
object
string
die Erklärung in PHP Skript
$lon = [];
$lat = [];
$name = [];
und das Abrufen von
while ($row = mysqli_fetch_array($query)) {
$name[] = $row['name'];
$lon[] = $row['lon'];
$lat[] = $row['lat'];
}
Da der Post @Xufox bezieht sich auf, Name ist ein reserviertes Schlüsselwort im Fensterbereich und daher gibt es typeof String zurück. Die Verwirrung kann auftreten, weil JavaScript-Datentypen dynamisch sind –
@MathiasW 'name' ist _not_ ein reserviertes Schlüsselwort. Es ist eine Eigenschaft, die ein Getter-Setter-ähnliches Verhalten hat. Wenn es eingestellt ist, wird es in eine Zeichenkette umgewandelt. Dies bezieht sich nicht wirklich auf dynamische Typisierung. 'window.name' hat nur einen speziellen Zweck und muss eine Zeichenfolge bleiben. – Xufox
Danke für die Korrektur @ Xufox, mein Schlechter! –