我觉得我在努力寻找答案,因为我觉得我错过了一些关键信息。
我要做的是对某些数据进行循环,然后根据其中一个数据执行不同的操作。
所以我循环的数据的print_r给了我这个。这一切都很好,它只有我需要的数据,没有多余的。
Array
(
[foodid] => 1
[menuid] => 1789798798
[creatorid] => 1
[foodtype] => hotdog
[frequency] => weekly
[cost] => 20
[chargedate] => 2017-07-14 11:05:18
)
我想根据频率中的值对其进行处理。 我想要做的事情都存储在一组相同的数组中。
每周,每周2次,每月,每天。 例如
$_weekly = array(
"cost" => "2",
"order" => "5",
"years" => "0",
);
$_2weekly = array(
"cost" => "4",
"order" => "10",
"years" => "0",
);
每周2周的类似数组等。
在循环中使用类似$ workingvar的var似乎很简单。 所以当我到达那里时我可以使用$ workingvar = $ _weekly,或者$ workingvar = $ _2weekly。
那么,如何将$ workingvar的内容设置为现有数组之一呢?然后我可以在数据的每一行使用相同的循环/函数,并根据频率值包含的内容更改它所引入的值。
编辑添加的第二个数组示例。
答案 0 :(得分:2)
所以你需要variable variable,在你的情况下它是:
#Data-Preprocessing: removing non-numbers
price_data<-gsub("\n","",price_data)
price_data<-gsub("Kaufpreis","",price_data)
price_data<-gsub(" ","",price_data)
price_data = gsub("[^[:alnum:].]", "", price_data)
但是使用具有相同键的数组是更优选的解决方案(仅仅因为它更具可读性和更短):
$arr['frequency'] = 'weekly';
$_weekly = [11,22,33];
$workingvar = ${'_' . $arr['frequency']};
var_dump($workingvar);
答案 1 :(得分:1)
有很多方法可以实现这一目标。如果您可以保证57d056ed0984166336b7879c2af3657f
始终具有有效值,那么像这样的全局查找数组可以执行以下操作:
frequency
然后在您的代码中,您只需分配到// Define your $_weekly, $_2weekly, etc here
$freqLookup = array(
"weekly" => $_weekly,
"2weekly" => $_2weekly,
// et cetera
);
:
$workingvar
如果您不能保证$workingvar = $freqLookup[$data["frequency"]];
始终拥有有效值,那么您可以先检查密钥是否存在:
frequency
一种可能的替代方案(但不那么优雅)是if (!isset($freqLookup[$data["frequency"]])) {
// Throw an exception or do something to handle the error
}
,而switch
链则更不优雅。如果你需要为每个案例做一些非常不同的事情,他们可能有其优点。
编辑:如果您能保证数据的完整性,那么u_mulder的答案可能会更好。如果您接受用户数据,则可能存在危险。查找数组的另一个优点是可以将键映射到不同的变量,例如if ... else if ... else