PHP 使用键的值从数组中获取值
PHP Get Value from Array with Value of Key
以下问题:我想构建一个基于 mysql 的语言系统。
为了减少加载时间并提高性能,我认为最好的办法是首先将所有语言短语提取到一个数组中(这发生在 mysqli 提取数组中)。然后,如果需要语言术语,则以数组作为全局变量调用函数。
我的数组函数:
$sql = $db->query('SELECT * FROM lang_phrases WHERE phraseLanguageId = 1');
$phrases = array();
while($row = $sql->fetch_array()) {
$phrases[] = $row;
}
现在我得到了这个数组:
array(2) {
[0]=> array(8) {
[0]=> string(1) "1"
["phraseId"]=> string(1) "1"
[1]=> string(1) "1"
["phraseLanguageId"]=> string(1) "1"
[2]=> string(4) "HOME"
["phraseKey"]=> string(4) "HOME"
[3]=> string(10) "Homepage"
["phraseContent"]=> string(10) "Homepage"
}
[1]=> array(8) {
[0]=> string(1) "2"
["phraseId"]=> string(1) "2"
[1]=> string(1) "1"
["phraseLanguageId"]=> string(1) "1"
[2]=> string(4) "BACK"
["phraseKey"]=> string(4) "BACK"
[3]=> string(6) "Back"
["phraseContent"]=> string(6) "Back"
}
}
这就是我的职责:
function l($key) {
global $phrases;
return PLACEHOLDER;
}
我想知道,我现在如何从函数中搜索数组 "phraseKey" $key 并获取值?
你有什么提示吗?或者我应该简单地 select 每个短语与每个查询(每次加载 100 个查询的性能问题?!)?
干杯,谢谢!
这是一个糟糕的结构。为什么不用短语 ID 和语言来键入数组?例如
$translations = array(
'HOME' => array(
'english' => 'Home',
'french' => 'Maison',
'german' => 'Haus"
etc...
这消除了任何搜索的需要。你直接通过language/phrase ID 查找即可。
我可以建议用
检索短语吗
while($row = $sql->fetch_array()) {
$phrases[$row['phraseKey']] = $row;
}
然后在您的 function l($key)
中您可以使用
搜索它们
$t = isset($phrases[$key]) ? $phrases[$key] : null
以下问题:我想构建一个基于 mysql 的语言系统。
为了减少加载时间并提高性能,我认为最好的办法是首先将所有语言短语提取到一个数组中(这发生在 mysqli 提取数组中)。然后,如果需要语言术语,则以数组作为全局变量调用函数。
我的数组函数:
$sql = $db->query('SELECT * FROM lang_phrases WHERE phraseLanguageId = 1');
$phrases = array();
while($row = $sql->fetch_array()) {
$phrases[] = $row;
}
现在我得到了这个数组:
array(2) {
[0]=> array(8) {
[0]=> string(1) "1"
["phraseId"]=> string(1) "1"
[1]=> string(1) "1"
["phraseLanguageId"]=> string(1) "1"
[2]=> string(4) "HOME"
["phraseKey"]=> string(4) "HOME"
[3]=> string(10) "Homepage"
["phraseContent"]=> string(10) "Homepage"
}
[1]=> array(8) {
[0]=> string(1) "2"
["phraseId"]=> string(1) "2"
[1]=> string(1) "1"
["phraseLanguageId"]=> string(1) "1"
[2]=> string(4) "BACK"
["phraseKey"]=> string(4) "BACK"
[3]=> string(6) "Back"
["phraseContent"]=> string(6) "Back"
}
}
这就是我的职责:
function l($key) {
global $phrases;
return PLACEHOLDER;
}
我想知道,我现在如何从函数中搜索数组 "phraseKey" $key 并获取值? 你有什么提示吗?或者我应该简单地 select 每个短语与每个查询(每次加载 100 个查询的性能问题?!)?
干杯,谢谢!
这是一个糟糕的结构。为什么不用短语 ID 和语言来键入数组?例如
$translations = array(
'HOME' => array(
'english' => 'Home',
'french' => 'Maison',
'german' => 'Haus"
etc...
这消除了任何搜索的需要。你直接通过language/phrase ID 查找即可。
我可以建议用
检索短语吗while($row = $sql->fetch_array()) {
$phrases[$row['phraseKey']] = $row;
}
然后在您的 function l($key)
中您可以使用
$t = isset($phrases[$key]) ? $phrases[$key] : null