2014-09-24 45 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数组而不是在函数内引用它。