缩短重复代码

时间:2012-08-01 17:39:27

标签: php arrays if-statement foreach

如何缩短此代码?例如,使用foreach。

    if($Email == NULL){
        $Email = "-";
    }
    elseif($Age == NULL){
        $Age = "-";
    }
    elseif($Sex == NULL){
        $Sex = "-";
    }

必须像这样替换

$search = array("%UserID%", "%RegDate%", "%Name%", "%Email%", "%Age%", "%Gender%");
$replace = array($UserID, $RegDate, $Name, $Email, $Age, $Sex);
$content = str_replace($search, $replace, $content);

修改:

我已经这样了,现在可以在三元代码中使用$ variable = $行吗?顺便说一下,我有一个variables.php文件,我使用三元代码来定义,我已经在那里尝试了但是因为它之前使用它没有用,我没有想到它:P

但是这个当前的代码工作,我只是想知道它是否可以更短。

while($row = mssql_fetch_assoc($accountinforesult)){
    $UserID = $row['UserID'];
    $RegDate = $row['RegDate'];
    $Name = $row['Name'];
    $Email = $row['Email'];
    $Age = $row['Age'];
    $Sex = $row['Sex'];

    $UserID = isset($UserID) ? $UserID : "-";
    $RegDate = isset($RegDate) ? $RegDate : "-";
    $Name = isset($Name) ? $Name : "-";
    $Email = isset($Email) ? $Email : "-";
    $Age = isset($Age) ? $Age : "-";
    $Sex = isset($Sex) ? $Sex : "-";
}

4 个答案:

答案 0 :(得分:1)

未经测试,但我相信这应该有效。

$vars = array('UserID', 'RegDate', 'Name', 'Email', 'Age', 'Sex');
foreach ($vars as $k => $v) {
    $$v = ($$v !== NULL) ? $$v : '-';
}

$$ v表示“名称为$ v的变量”。如果$ v ='foo'则$$ v为$ foo。

查看“变量变量”:http://php.net/manual/en/language.variables.variable.php

答案 1 :(得分:0)

$Email = is_null($Email) ? "-" : $Email;

你计算其余的

答案 2 :(得分:0)

我已经这样了,现在可以在三元代码中使用$ variable = $行吗? 顺便说一下,我有一个variables.php文件,我使用三元代码来定义,我已经在那里尝试了但是因为它之前使用它没有用,我没有想到它:P

但是这个当前的代码工作,我只是想知道它是否可以更短。

while($row = mssql_fetch_assoc($accountinforesult)){
    $UserID = $row['UserID'];
    $RegDate = $row['RegDate'];
    $Name = $row['Name'];
    $Email = $row['Email'];
    $Age = $row['Age'];
    $Sex = $row['Sex'];

    $UserID = isset($UserID) ? $UserID : "-";
    $RegDate = isset($RegDate) ? $RegDate : "-";
    $Name = isset($Name) ? $Name : "-";
    $Email = isset($Email) ? $Email : "-";
    $Age = isset($Age) ? $Age : "-";
    $Sex = isset($Sex) ? $Sex : "-";
}

答案 3 :(得分:0)

$params = array(
  'Email' => $Email,
  'Age' => $Age,
  'Gender' => $Sex,
);

foreach($params as $paramName => $paramValue) {
  $paramValue = is_null($paramValue) ? '-' : $paramValue;
  //$paramValue = mysql_real_escape_string($paramValue); // or something like that...
  $content = str_replace('%'.$paramName.'%', $paramValue, $content);
}