在php中使用if语句创建默认值

在php中使用if语句创建默认值,php,if-statement,Php,If Statement,我需要一些帮助来重新处理这个php代码的逻辑。我想做的是在这个foreach循环中构建一些条件来处理空值null,并给它一些默认值,比如“n/a”。它使用$class_数组来匹配从文本文件读取的一个案例,但是如果我没有任何一个状态,则将其设置为“n/a” 我只是不清楚如何构建它。这是代码的一部分。我在想,它必须在这种情况下处理??谢谢 $class_array = array( 'Process succeeded' => 'success', '

我需要一些帮助来重新处理这个php代码的逻辑。我想做的是在这个foreach循环中构建一些条件来处理空值null,并给它一些默认值,比如“n/a”。它使用$class_数组来匹配从文本文件读取的一个案例,但是如果我没有任何一个状态,则将其设置为“n/a”

我只是不清楚如何构建它。这是代码的一部分。我在想,它必须在这种情况下处理??谢谢

$class_array = array(
        'Process succeeded'      => 'success',
        'Process failed'         => 'failure',
        'Review Logs for status' => 'warn',
        'Check for Errors'       => 'warn'
);

foreach ($InputFile as $line){
    preg_match_all("/([0-9])-([^=]+)=([^;]+);/", $line, $matches, PREG_SET_ORDER);
    $LineData = array();
    foreach ($matches as $information) {
        $LineData[$information[2]] = $information[3];
    }
    $timestamp = strtotime($LineData["LogDate"]." ".$LineData["StartTime"]);
    $LineData['StartTime'] = date("Y-m-d H:i:s",strtotime($LineData['StartTime']));
    $LineData['server_url'] = $server_array[$LineData['Server']];
    $LineData['status_class'] = $class_array[$LineData['Status']];

    $data[$timestamp] = $LineData;
}

使用速记条件赋值

//Lets assume we're getting some data from a form
$OriginalValue = $_POST['some_user_input'];

//Set a new variable, $NewValue, to the entered data (if available) or a default value.
$NewValue = ( empty($OriginalValue) ) ? 'No data entered' : $OriginalValue;

只需将任何条件(或一组条件)放在括号内,其作用类似于if/else。如果为true,则将$NewValue设置为“未输入数据”,否则将$NewValue设置为$OriginalValue。

我认为这应该可以:

if(isset($LineData['status_class'])) {

  $LineData['status_class'] array_key_exists($LineData['Status'], $class_array)
     ? $class_array[$LineData['Status']]
     : 'n/a';
}
else
{
  $LineData['status_class'] = 'n/a';
}

如果$class\u数组中没有$LineData['status']键,您的意思是$LineData['status']应该设置为'n/a'吗?如果是这样,这应该做到:

$status_class = 'n/a';
if (array_key_exists($LineData['Status'], $class_array)) {
    $status_class = $class_array[$LineData['Status']];
}
$LineData['status_class'] = $status_class;

您的示例代码太吵了。将其精简到理解您的问题所需的最低限度。您是在尝试设置您的状态\u class=“n/a”还是在尝试设置$data[$timestamp]=“n/a”?“状态\u class”=“n/a”,如果不满足$class\u数组的任何条件。对。基本上,如果“Status”没有从输入文件读入的值。将其嵌入foreach?然后在嵌套的foreach循环后添加“if(empty($LineData['Status'])continue;”。这将跳过当前迭代并切换到下一行处理。