我的文件如下所示。我需要通过file_put_contents
在里面添加一些新的数组键。
<?php
$translation = array(
'Wyposażenie' => 'Equipment',
);
?>
我不知道该怎么做。我唯一知道的是,我必须使用file_put_contents($file, "'test' => 'new value',", FILE_APPEND | LOCK_EX);
,但它会在文件末尾添加新信息。如何在最后一个数组键之后添加我的新信息。要得到这样的东西:
<?php
$translation = array(
'Wyposażenie' => 'Equipment',
'test' => 'new value',
);
?>
正如其他人在评论中提到的,使用json可以以更好的方式实现这一点,但仅针对这种情况,以下是您可以做到的方法:
<?php
$read = file_get_contents("i.txt");
$delete = strrpos($read,");",-1);
$read = substr($read,0,$delete);
$new_value = "'test' => 'new value',";
$read .= "'r'n'$new_value 'r'n);'r'n ?>";
file_put_contents('i.txt',$read);
?>
我很无聊。这不会覆盖现有的密钥。要覆盖,请反转array_merge()
:中的阵列
function add_to_trans($file, $array) {
include($file);
$result = array_merge($translation, $array);
file_put_contents($file, '$translation = ' . var_export($result, true));
}
$new_trans = array('test' => 'new value');
add_to_trans('path/to/file.php', $new_trans);
但您应该重新思考这一点,并在文件中保存一个json_encode()
数组,然后将其读出来。
这是我自己写的。这是我的代码:
public static function l($string)
{
$string = trim(preg_replace('/'s+/', ' ', $string));
if($_SESSION['lang']=='default')
{
return $string;
}
else
{
$file = 'translations/'.$_SESSION['lang'].'.php';
if (file_exists($file))
{
require($file);
$search = array_key_exists($string, $translation);
if($search && $translation[$string] != ' ')
{
# ZNALAZŁ TŁUMACZENIE
return $translation[$string];
}
else
{
if(!$search)
{
# NIE ZNALAZŁ TŁUMACZENIA
$translation[$string] = ' ';
$serialized = "<?php'n'$translation = array( 'n'n'n";
while ($array = current($translation)) {
if(key($translation))
{
$serialized .= "'".key($translation)."''n=>'n'".current($translation)."','n'n'n";
}
next($translation);
}
$serialized .= ");'n?>";
file_put_contents($file, $serialized);
}
if($translation[$string] == ' ')
{
# ZNALAZŁ PUSTE TŁUMACZENIE
}
return $string;
}
}
else
{
return $string;
}
}
}