我有一个如下配置文件,
NameA=3
NameB=2
NameC=1
以下代码尝试查找NameC,并替换其值。假设在这里我传入值0。
public function writeScreenSwitch($isTick)
{
$filename = 'my/file/path';
$data = parse_ini_file($filename);
$replace_with = array(
'NameC' => $isTick
);
// After print out $replace_with value, I'm sure the value is,
// [NameC] => 0
$fh = fopen($filename, 'w');
foreach ( $data as $key => $value )
{
if ( !empty($replace_with[$key]) ) {
$value = $replace_with[$key];
} else {
echo "array empty";
// the problem is here.
// $replace_with[$key] is always empty.
// but before the loop, the value $replace_with['NameC']=0
// why.
}
fwrite($fh, "{$key}={$value}" . PHP_EOL);
}
fclose($fh);
}
我已经在代码中描述了问题。
答案 0 :(得分:3)
因为0被视为EMPTY。这就是你得到这个的原因。
检查here
答案 1 :(得分:1)
问题在于empty()函数,请查看“返回值”部分中的备注。 您需要检查的是,如果已设置,则使用isset()函数:
public function writeScreenSwitch($isTick)
{
$filename = 'my/file/path';
$data = parse_ini_file($filename);
$replace_with = array(
'NameC' => $isTick
);
// After print out $replace_with value, I'm sure the value is,
// [NameC] => 0
$fh = fopen($filename, 'w');
foreach ( $data as $key => $value )
{
if ( isset($replace_with[$key]) ) {
$value = $replace_with[$key];
} else {
echo "array not set";
// the problem is here.
// $replace_with[$key] is always empty.
// but before the loop, the value $replace_with['NameC']=0
// why.
}
fwrite($fh, "{$key}={$value}" . PHP_EOL);
}
fclose($fh);
}
这应该可以解决问题。 ;)