Dobra, nawet jeśli mam dużo informacji na temat sortowania, to dalej nie wiem, jak ich użyć do własnego sortowania według zmodyfikowanego alfabetu. Skoro się wypowiedziałeś na ten temat, to założę się, że wiesz coś na ten temat. Może mógłbyś mi pomóc? Nakierować mnie, jakiej użyć funkcji, ewentualnie podać adres strony jakiegoś poradnika z takim rodzajem sortowania lub napisać to pseudokodem, podając nazwę funkcji? Niestety nie mam pojęcia jak się za to zabrać... Jeśli miałbym sortować tablice za pomocą pętli lub funkcji wykonującej to samo na kilku tablicach, to pewnie posortowałoby je oddzielnie, tzn. osobno sortując $name, osobno $klasy, itd. mnie natomiast chodzi o posortowanie jednej tablicy, na podstawie której sortują się pozostałe. Moje wymagania spełnia funkcja array_multisort, jednak nie pozwala ona (z tego, co wiem) na zdefiniowanie własnego sposobu (kolejności) sortowania.
EDIT:
Ja na razie mam taki kod:
<?php
header('Content-Type: text/html; charset=utf-8'); $xml = simplexml_load_file("new2.txt");
$ile = count($xml -> string); foreach ($xml -> string as $value)
{
$id[] = (string)$value -> id;
$name[] = (string)$value -> name;
$body[] = (string)$value -> body;
$klasy[] = (preg_match("/STR_SKILL_([a-z]{2})_(.+)/i", ((string
)$value -> name ?
preg_replace("/STR_SKILL_([a-z]{2})_(.+)/i", "\\1", (string
)$value -> name) : ""); }
$array_lowercase = array_map('strtolower', $name); $zapytanie = "";
for($i=0; $i < $ile; $i++)
{
$dab = 0;
$tekst = "";
$tresc = "\"";
$tekst .= "(\"".$id[$i]."\", \"".$name[$i]."\", \"".$klasy[$i]."\", \"".$body[$i]."\", ";
$i++;
if (preg_match("/(.+)_DESC_Abnormal$/i", $name[$i+1
])) {
$tekst .= "\"".$id[$i+1]."\", \"".$name[$i+1]."\", ";
$tresc .= $body[$i+1]."=====";
$dab = 1;
{
$tekst .= "\"".$id[$i]."\", \"".$name[$i]."\", ";
$tresc .= $body[$i]."=====";
} else {
$tekst .= "\"\", \"\", ";
}
{
$tekst .= "\"".$id[$i]."\", \"".$name[$i]."\", ";
$tresc .= $body[$i]."\")";
if ($dab) $i++;
} else {
$tekst .= "\"\", ";
$tresc .= "\")";
}
$tekst .= $tresc;
$zapytanie .= "$tekst, ";
}
$query = "INSERT INTO sl_skille (`id_z_gry`, `name`, `klasa`, `nazwa_ang`, `id_z_gry_abnormal`, `name_abnormal`, `id_z_gry_desc`, `name_desc`, `opis_ang`) VALUES ". substr($zapytanie, 0, -2).";";
?>
Działa on poprawnie, jednak sortowanie jest nieco inne, niż bym sobie tego życzył.
Wynikiem jest tablica zawierająca na przykład takie elementy:
[30] => STR_ACH_StatupAr_Lr_Nr_Officer [31] => STR_ACH_StatupAr_Lr_Nr_Officer_Abnormal [32] => STR_ACH_StatupAr_Lr_Nr_Officer_DESC [33] => STR_ACH_StatupAr_Lr_Nr_OfficerF [34] => STR_ACH_StatupAr_Lr_Nr_OfficerF2 [35] => STR_ACH_StatupAr_Lr_Nr_OfficerF2_DESC [36] => STR_ACH_StatupAr_Lr_Nr_OfficerF_Abnormal [37] => STR_ACH_StatupAr_Lr_Nr_OfficerF_DESC [38] => STR_ACH_StatupAr_Lr_Nr_QuarterMaster
Zależy mi na tym, aby po 33 znalazł się 37, czyli aby najpierw sortowało F_ (lub po prostu coś zawierającego podkreślnik), a dopiero później resztę, czyli F2, itd.