Re: [請益] 一段程式與陣列問題~請幫解答!

看板PHP作者 (周星星)時間17年前 (2008/05/03 17:52), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《jolin19 (alex)》之銘言: : : 程式如下:(不好意思~補上xoop定義的function) : function execute($xoopsDB, $sql, $standalone = false, $multiple = false) : { : if ($standalone) { : $result = $xoopsDB->query($sql) or die("DB Fail: $sql"); : if (DEBUG) echo "$sql ... ok\n"; : } else { : if (SELECT_DB_NAME != XOOPS_DB_NAME) : $xoopsDB->selectdb("FundEval"); : $result = $xoopsDB->query($sql) or die ("DB Fail: " . : dumpLastQuery($xoopsDB->logger)); : if (DEBUG) echo "$sql ... ok<br>"; : if (SELECT_DB_NAME != XOOPS_DB_NAME) : $xoopsDB->selectdb(XOOPS_DB_NAME); : } : if ($multiple) { : $rows = array( ); : while($row = $xoopsDB->fetchArray($result)) : $rows[] = $row; : return $rows; : } else { : $row = $xoopsDB->fetchArray($result); : return $row; : } : } : : $sql = "SELECT a.fund_id, a.name, b.acc_star, b.time_star, " . : : " b.sharp6, b.sharp12, b.sharp24, ". : : " b.ret, b.acc, b.time ". : : "FROM $fund_table a, $fund_statics b ". : : "WHERE b.fund_id=a.fund_id ". : : $where . : : "AND b.time_index='$date' ". : : $sql_star; : : $statics = execute($xoopsDB, $sql, false, true); // 這行不懂? execute 傳入四個參數 第一個是 xoop 的資料庫操作物件 第二個是 要傳入的 sql 敘述句 第三個是資料庫切換,這邊我不知道 xoops 的資料庫是怎麼規劃的,所以不曉得它的 作用是什麼,程式的意思是如果傳入 false,切換到 "FundEval" 這個 database 否則會以 $xoopsDB 預設的 database 操作。 第四個參數是傳回多列或只有一列。 在你的例子裡,參數四是 true,所以 $statics 會是一個多維陣列, 應該就是 mysql_fetch_array($result) 的所有 rows 的陣列。 (它使用的是 $xoopsDB 的方法,作用應該是一樣的吧) print_r 出來大概是這樣: Array{ [0] Array{ func_id => ... name => .... ....... } [1] Array{ func_id => ... ....... } } 裡面的 [0] 陣列就是一 row 如果你要排序,一開始在 sql 敘述句裡做 ORDER BY, PHP 的多維陣列排序這邊有例子: http://tw2.php.net/manual/en/function.array-multisort.php -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.80.138.232

05/03 17:53, , 1F
這應該是 xoops 裡的程式,它沒有 document 嗎?
05/03 17:53, 1F

05/04 14:36, , 2F
還可以考慮用 usort 來進行排列
05/04 14:36, 2F

05/04 14:37, , 3F
自定大小比較用的函數 在詭異的數值排列方式都有可以
05/04 14:37, 3F
文章代碼(AID): #1873NRG2 (PHP)
文章代碼(AID): #1873NRG2 (PHP)