无法通过PHP将值写入文件

时间:2011-09-13 04:15:13

标签: php

我有一个如下配置文件,

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);
}

我已经在代码中描述了问题。

2 个答案:

答案 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);
}

这应该可以解决问题。 ;)