2011-02-11 217 views
0

有点adivce后 - 我有一个相当长的嵌套if语句块,我正在寻找可以改进它并使其更高效的方法。我确实想到了一个转换 - 但我不明白我怎么能把它分开。嵌套的IF语句PHP

任何想法赞赏

$portfolioItems [$i] = array(//assign vars into array 
    'imagePath' => '/sites/jda_redev/'.$myrow_home->path.'/thumbs/thumbs_'.$myrow_home->filename, 
    'altText' => $myrow_home->alttext, 
    'description' => $myrow_home->description, 
    'client' => $extra_client->field_value, 
    'job' => $extra_job->field_value, 
    'channel' => $extra_channel->field_value, 
    'channeltwo' => $extra_channeltwo->field_value, 
    'channelthree' => $extra_channelthree->field_value, 
    'channelfour' => $extra_channelfour->field_value, 
    'channelfive' => $extra_channelfive->field_value, 
    'sector' => $extra_sector->field_value, 
    'workerone' => $extra_workerone->field_value, 
    'workertwo' => $extra_workertwo->field_value, 
    'gallery' => $galleryName, 
    'mediaType' => $media_type->field_value, 
    'videoName' => $video_name->field_value 
); 

if ($portfolioItems [$i]['imagePath'] == "") 
     {$portfolioItems [$i]['imagePath'] = " ";} 
     if ($portfolioItems [$i]['altText'] == "") 
     {$portfolioItems [$i]['altText'] = " ";} 
     if ($portfolioItems [$i]['description'] == "") 
     {$portfolioItems [$i]['description'] = " ";} 
     if ($portfolioItems [$i]['client'] == "") 
     {$portfolioItems [$i]['client'] = " ";} 
     if ($portfolioItems [$i]['job'] == "") 
     {$portfolioItems [$i]['job'] = " ";} 
     if ($portfolioItems [$i]['channel'] == "") 
     {$portfolioItems [$i]['channel'] = " ";} 
     if ($portfolioItems [$i]['channeltwo'] == "") 
     {$portfolioItems [$i]['channeltwo'] = " ";} 
     if ($portfolioItems [$i]['channelthree'] == "") 
     {$portfolioItems [$i]['channelthree'] = " ";} 
     if ($portfolioItems [$i]['channelfour'] == "") 
     {$portfolioItems [$i]['channelfour'] = " ";} 
     if ($portfolioItems [$i]['channelfive'] == "") 
     {$portfolioItems [$i]['channelfive'] = " ";} 
     if ($portfolioItems [$i]['sector'] == "") 
     {$portfolioItems [$i]['sector'] = " ";} 
     if ($portfolioItems [$i]['workerone'] == "") 
     {$portfolioItems [$i]['workerone'] = " ";} 
     if ($portfolioItems [$i]['workertwo'] == "") 
     {$portfolioItems [$i]['workertwo'] = " ";} 
     if ($portfolioItems [$i]['gallery'] == "") 
     {$portfolioItems [$i]['gallery'] = " ";} 
     if ($portfolioItems [$i]['mediaType'] == "") 
     {$portfolioItems [$i]['mediaType'] = " ";} 
     if ($portfolioItems [$i]['videoName'] == "") 
     {$portfolioItems [$i]['videoName'] = " ";} 
+3

没有嵌套。 – 2011-02-11 15:48:51

+0

你有没有在这里列出的$ portfolioItems [$我]更多的项目?或者你想为整个阵列做这个? – 2011-02-11 15:49:24

+0

为什么不将值('mediaType','videoName')添加到数组中并使用for循环循环if语句? – reggie 2011-02-11 15:50:22

回答

8
foreach ($portfolioItems[$i] as $key => $val) { 
    if ($val == "") { 
    $portfolioItems[$i][$key] = " "; 
    } 
} 
1

这个怎么样?

$portfolioKeys = Array('sector', 'workerone'); // Add all keys to check in here 

foreach($portfolioKeys as $key) { 
    if ($portfolioItems[$i][$key]) == "") { 
     $portfolioItems[$i][$key] = ""; 
    } 
} 
5

你可以使用一个foreach迭代来完成它:

foreach ($portfolioItems[$i] as &$value) { 
    if($value == "") $value = " "; 
} 

// Thanks @Mark Baker, I forgot this very important line: 
unset($value); 
0

我没有看到一个嵌套的条件,但不管怎么说,它看起来像你可以(也许 - 如果这些都是你的元素):

foreach ($portfolioItems[$i] as $k => $v) { 
    $portfolioItems[$i][$k] = ($v == "")? " " : $v; 
}