2014-09-24 60 views
-2

大家好我是新來的PHP。我有麻煩把這個代碼放入一個函數,任何人都可以解釋或顯示如何做到這一點?因爲這個代碼將被使用超過一次我將如何把這個功能?

foreach($_POST as $weather_key => $weather){ 
    $for_now=is_array($weather) ? $weather : trim($weather)); 
    if(empty($temporary) && in_array($key,$required_weather_fields)){ 
     $weather_errors[]=$weather; 
     $$weather_key=''; 
    }elseif(in_array($weather_key,$expected_weather_fields)){ 
     $$weather_key=$for_now; 
    } 
} 
+0

快速推薦,儘量遠離'$$ weather_key'等動態變量。這可以使代碼非常快速地變得麻煩。 – SirDarius 2014-09-24 08:42:24

+0

謝謝,你推薦我使用哪種約定? – 2014-09-24 08:43:18

+0

動態創建變量應該逐步淘汰,以便創建具有顯式字段的類,例如,可以創建一個Weather類,其中每個鍵都是一個字段,您可以通過代碼註釋明確地記錄這些字段。閱讀你的代碼的人會愛你:) – SirDarius 2014-09-24 08:47:09

回答

0

更多它看起來並不像您有任何參數,所以你會簡單的寫是這樣的:當你要使用它

function weather_function() { 
    foreach($_POST as $weather_key => $weather) { 
     $for_now = is_array($weather) ? $weather : trim($weather)); 
     if(empty($temporary) && in_array($key, $required_weather_fields)) { 
      $weather_errors[] = $weather; 
      $$weather_key = ''; 
     } elseif(in_array($weather_key, $expected_weather_fields)) { 
      $$weather_key = $for_now; 
     } 
    } 
} 

然後:

weather_function(); 
+0

如果OP沒有嘗試這樣做,這將是一個非常愚蠢的問題 – 2014-09-24 09:26:20

+0

@JuanMendes是的,但我唯一的問題是,這是假設顯示缺少fields.When我把裏面的功能缺少的字段是沒有顯示 – 2014-09-24 09:38:24

+0

@jackmonreo:如果你擴大你的問題,以顯示你想要完成的是什麼,這將有所幫助。就目前來看,這個問題很模糊。 – Knossos 2014-09-24 10:41:12

0

像這樣的東西應該工作:

function weather($data, $required_weather_fields, $expected_weather_fields, $temporary) { 
foreach($data as $weather_key => $weather){ 
    $for_now=is_array($weather) ? $weather : trim($weather)); 
    if(empty($temporary) && in_array($weather_key,$required_weather_fields)){ 
     $weather_errors[]=$weather; 
     $$weather_key=''; 
    }elseif(in_array($weather_key,$expected_weather_fields)){ 
     $$weather_key=$for_now; 
    } 
} 

return array($$weather_key, $weather_errors); 
} 

list($key, $errors) = weather($_POST); 

您應該注入$ _POST數組而不是在函數內引用它。