我的PHP代码在这里
<?php
function String($word){
$lang = parse_ini_file("../pard_language/en/language.ini");
$key = array_search($word, $lang);
if(isset($key)){
echo $key;
}
}
echo String("PARD_INSTALL");
?>
我的language.ini文件是这个
PARD_INSTALL = Install
PARD_USER_AGGREMENT = User Aggrement
PARD_AGREE = Agree
PARD_HOST_NAME = Host Name
PARD_DATA_BASE = Data Base
PARD_DATA_BASE_USER = Data Base User
PARD_DATA_BASE_USER_PASS_WORD = Data Base User Password
PARD_CONNECT = Connect
PARD_RESET = Reset
PARD_ADMIN_USER_NAME = Admin User Name
PARD_ADMIN_USER_PASS_WORD = Admin User Password
PARD_LOGIN = Login
这上面的代码不起作用。我想保留一个包含语言的ini文件,并且需要使用上面的php函数获取单词值。这个代码没有给出任何输出。请帮我解决这个问题?
答案 0 :(得分:5)
您正在搜索未获取密钥的值,parse_ini_file
将返回所有元素的数组,因此$lang[$word]
您应该获得所需的值...
function String($word) {
$lang = parse_ini_file("../pard_language/en/language.ini");
return isset($lang[$word]) ? $lang[$word] : null ;
}
现在还是BAD Approach
为什么?
parse_ini_file
String
是函数的错误名称echo
被调用了两次.. 1.在函数内外使用return
以下是我将使用的内容:
$ini = new ArrayINI("../pard_language/en/language.ini");
echo $ini("PARD_INSTALL");
// or
echo $ini['PARD_INSTALL'];
因为我也扩展了IteratorAggregate
我可以循环所有值
foreach ( $ini as $k => $value ) {
var_dump($k . " = " . $value);
}
使用的课程
class ArrayINI implements ArrayAccess, IteratorAggregate {
private $lang;
public function __construct($ini) {
$this->lang = parse_ini_file($ini);
}
function __invoke($offset) {
return $this->offsetGet($offset);
}
public function getIterator() {
return new ArrayIterator($this->lang);
}
public function offsetSet($offset, $value) {
if (is_null($offset)) {
$this->lang[] = $value;
} else {
$this->lang[$offset] = $value;
}
}
public function offsetExists($offset) {
return isset($this->lang[$offset]);
}
public function offsetUnset($offset) {
unset($this->lang[$offset]);
}
public function offsetGet($offset) {
return isset($this->lang[$offset]) ? $this->lang[$offset] : null;
}
}
答案 1 :(得分:1)
试
$lang = parse_ini_file("../pard_language/en/language.ini");
print_r($lang);
答案 2 :(得分:0)
我建议你创建一个静态类,这样你就不必为你想要的每一个键重新分析相同的ini文件:
class iniParser {
private static $parsedFile = null;
public static function String($word) {
if (self::$parsedFile === null) {
self::$parsedFile = parse_ini_file("../pard_language/en/language.ini");
}
if (isset(self::$parsedFile[$word])) {
return self::$parsedFile[$word];
}
return null;
}
}
echo iniParser::String("PARD_INSTALL");