我想從我的 mysql 中選擇每個單詞而不是全部
function getItem($id)
{
global $database;
$stmt = $database->runQueryPlayer("SELECT vault FROM items WHERE index=?");
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_COLUMN);
if ($result)
return get_item_name_locale_name($result[0]); // Each number will result a name
else {
return '---';
}
}
必須全部歸還,但分開。
我的列看起來像這樣,每個數字都是 item
78 26 50 28 -1 30 32 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0,因為我使用函式 get_item_name_locale_name,我應該得到
78 = name1
25 = name2
50 = name3
等等,但我只得到第一個。我需要忽略-1 & 0 謝謝
即使我使用這個查詢,結果也是一樣的,只是第一個詞
SELECT hunter.a_index, hunter.a_name,f.a_wearing
FROM itemnames hunter
INNER JOIN vault f ON hunter.a_index = f.a_wearing
GROUP BY hunter.a_index
uj5u.com熱心網友回復:
我不熟悉 Metin2CMS。但是如果資料庫層正在擴展 PDO,那么這里的fetchAll呼叫應該回傳一個值陣列。
您的問題是您只回傳處理后的第一個結果:
return get_item_name_locale_name($result[0]);
相反,您應該回傳一個所有處理過的值陣列。您可以為此使用array_map。
對于 7.4 之前的 PHP 版本:
function getItem($id)
{
global $database;
$stmt = $database->runQueryPlayer("SELECT vault FROM items WHERE index=?");
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_COLUMN);
if ($result) {
// This is changed.
return array_map(function ($row) {
get_item_name_locale_name($row);
}, $result);
} else {
return '---';
}
}
對于 PHP 7.4 ,您可以使用箭頭函式來縮短代碼:
function getItem($id)
{
global $database;
$stmt = $database->runQueryPlayer("SELECT vault FROM items WHERE index=?");
$stmt->bindParam(1, $id, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_COLUMN);
if ($result) {
// This is changed.
return array_map(fn($row) => get_item_name_locale_name($row), $result);
} else {
return '---';
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396878.html
上一篇:在php中搜索陣列中的專案
