更新例如使用内存数据库中的小片段:) 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