更新例如使用內存數據庫中的小片段:) PS:是不是需要在所有因爲我檢查輸入布爾本例中的XSS保護值。看到相反的順序結果指定order?desc
<?php
/* XSS-protection. */
$_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING);
$array = array(
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
);
function createTable($db) {
$db->exec("CREATE TABLE IF NOT EXISTS tags (id INTEGER PRIMARY KEY, tag TEXT NOT NULL UNIQUE)");
}
function insertData($db, $array) {
$db->beginTransaction();
foreach($array as $elm) {
try {
$stmt = $db->prepare("INSERT INTO tags (tag) VALUES (:tag)");
$stmt->execute(array(
":tag" => $elm
));
} catch(PDOException $e) {
/*** roll back the transaction if we fail ***/
$db->rollback();
/*** echo the sql statement and error message ***/
echo $sql . '<br />' . $e->getMessage();
}
}
$db->commit();
}
$db = new PDO('sqlite::memory:');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
//
createTable($db);
insertData($db, $array);
$order = "ASC";
if (strtoupper($_GET['order']) == "DESC") {
$order = "DESC";
}
$stmt = $db->prepare("SELECT * FROM tags ORDER BY tag $order");
$stmt->execute();
$data = array();
while($row = $stmt->fetch()) {
$data[] = array($row['tag']);
}
echo json_encode($data);
希望你明白我嘗試 實現(如果不是隻問)。在 任何幫助的想法,接近或 例子將是巨大的。
首先我有幾個問題你說你使用的是PHP5。你如何檢索你的數據(RDBMS)?如果不是,PHP5有SQLite enabled by default。我認爲你應該至少使用RDBMS(SQLite/etc)來爲你完成繁重的工作。
當你沒有在PHP任何排序learn SQL。我想這PDO tutorial,同時給你內部如何安全地使用SQL。 SQL很容易受到SQL注入的影響,但是由於PDO準備好的語句,您不必再擔心這一點。
我有一組結果是從多維數組中拉出的 。 目前陣列關鍵是產品的價格 而項目包含 包含所有 產品細節另一個數組。
使用ORDER BY進行訂購。我會使用一個數據表來做排序客戶端。還保險你在服務器上工作(PHP)。你可以看看YUI2's datatable。
感謝您的答覆。對不起,我有問題是根據子數組的值排序主數組。 例如: 產品1個子陣列具有FOO的一個名稱。 產品2子數組的名稱爲bar。 產品3子陣列的名稱爲baz。 我想通過名稱訂購的主陣列 – fl3x7 2011-01-28 20:31:07
好,我編輯和添加多維數組排序。 – profitphp 2011-01-28 20:34:03
非常感謝。去嘗試這個:) – fl3x7 2011-01-28 22:24:20