PHP: Rewriting switch as class
因此,我在for each循环中有一个switch语句,它检查数组中字段的值,并使用该值为每个唯一值构建一个命名数组和电子邮件地址变量。问题在示例代码下面。
例如,如果值为foo、bar和foobar,则会出现以下情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | switch($value['value']) { case 'foo': if(!isset($foo)){ $foo = array(); } if(!isset($email_foo)){ $email_foo = convert_to_email($value['value']); } array_push($foo, $value); break; case 'bar': if(!isset($bar)){ $bar = array(); } if(!isset($email_bar)){ $email_bar = convert_to_email($value['value']); } array_push($bar, $value); break; case 'foobar': if(!isset($foobar)){ $foobar = array(); } if(!isset($email_foobar)){ $email_foobar = convert_to_email($value['value']); } array_push($foobar, $value); break; default: if(!isset($default)){ $default = array(); } if(!isset($email_default)){ $email_default = '[email protected]'; } array_push($default, $value); } |
产生4个不同的电子邮件地址:
1 2 3 4 | $email_foo = '[email protected]'; $email_bar = '[email protected]'; $email_foobar = '[email protected]'; $email_default = '[email protected]'; |
号
以及4种不同的数据阵列:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
等。。。
所以,问题是:是否可以编写一个可用于创建所有命名数组和电子邮件变量的类?有点像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Account_Manager_Build { public function __construct() { if(!isset($this)){ $this = array(); } if(!isset("email_$this")){ "email_$this" = convert_to_email($this->value['value']); } array_push($this, $this->value); } } |
。
出于测试目的,以下是在整个示例中使用的函数convert_to_email:
1 2 3 4 | function convert_to_email($input){ $returned = strtolower(substr($input, 0, 1)).strtolower(end(str_word_count($input, 2))).'@ismail.com'; return $returned; } |
实际上,您可以使用
1 2 | $variable ="email_$name"; $$variable ="something"; |
但是我不知道你想做什么