2011-02-11 242 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; 
}