2012-12-03 49 views
2

的一種方式,我有以下的PHP代碼:到neaten這個PHP代碼

<?php 

//code above  
$pic_1 = $afil['image_1']; 
$pic_2 = $afil['image_2']; 
$pic_3 = $afil['image_3']; 
$pic_4 = $afil['image_4']; 
$pic_5 = $afil['image_5']; 
$pic_6 = $afil['image_6']; 
$pic_7= $afil['image_7']; 
$pic_8 = $afil['image_8']; 
$pic_9 = $afil['image_9']; 
$pic_10 = $afil['image_10']; 

if ($pic_1 = "") 
{ 
$pic_1 = //defaultpic - to be defined, same as below 
} 

if ($pic_2 = "") 
{ 
$pic_2 = //defaultpic 
} 
?> 

而不是重複這些「如果」每張照片的語句(直到$ PIC 10)我只是想知道,如果有人能指出一個更優雅和有效的方式來做到這一點。我對PHP很陌生,這是我遇到的新情況。提前致謝。

+1

我想你可能要一個foreach? –

+5

您應該查看[控制結構](http://php.net/language.control-structures)上的手冊頁。在那裏,你會找到關於如何使用'while','for'和最有趣的'foreach'構造循環的信息。 – Charles

+2

更有效地使用數組。將你的數組鍵改爲'$ afil ['image'] [1]',然後遍歷$ afil ['image']'數組。 –

回答

4

使用arrays和循環通過他們只用1點if聲明,這樣,

foreach($afil as $k => $v) { 
    if(empty($v)) 
    $afil[$k] = ...//default pic 
} 

或者,如果你渴望有一個附加陣列$pics(用於也許將來使用),

foreach($afil as $k => $v) { 
    $pics[$k] = $v; 
    if(empty($v)) 
    $pics[$k] = ...//default pic 
} 

另外,=是一個賦值運算符。爲了比較(或狀態檢查),您需要使用=====(類型安全)。

編輯:

$afil = mysql_query(...); 
while($row = mysql_fetch_array($afil)) { 
    //In here, say you create an array $result_rows with all the rows 
    $result_rows[] = $row; 
} 

然後,在foreach使用$result_rows

+0

哦耶(最後一點)。非常感謝你。 – Ross

+0

我大約有60%的人確定,如果你想在循環中改變'$ v',並讓它反映在原始數組中,你就需要將它作爲參考。像'foreach($ afil as $ k =>&$ v){' – cHao

+0

我在註釋中輸入時編輯了該行。 :) –

0

Arrays是你的黃金解決方案:

$pic = array('image_1', 'image_2', 'image_3'....); 

for ($i = 0; $i < count($pic); $i++){ 
if ($pic[$i] == ""){ 
$pic[$i] = //defaultpic - 
} 

} 
+0

嗨,感謝您的建議。首先,我將'image_1'改爲了'$ pic_1',因爲「image_1」來自mysql_query。無論如何根據你的代碼,以下內容應該是正確的 - $ pic [0] = $ pic_1 =「uploads/default.png「,然後在右邊的html標籤 Ross