3 回答
TA贡献1982条经验 获得超2个赞
该功能只有几个小改动。
主要问题是您只是在本地副本中更改变量的值,您需要更改要通过引用传递的变量数组以允许它更新原始数据。&
在参数前面添加$variables
应该这样做。
function updateTheValue(&$variables,$variable) {
此外,当您设置值时,您将元素设置为仅包含值部分的新数组,而不是仅更新值,因此将该行更改为...
$variables[trim($expbyequal[0])]["value"]= trim($expbyequal[1]);
TA贡献1936条经验 获得超6个赞
您的函数返回$match,可能是trueor false,它不允许您查看更改。
function updateTheValue(&$variables,$variable) {
// Split variable looking for into name and value
$vars = explode(",", $variable);
$match = false;
foreach ($vars as $var){
$expbyequal = explode("=", $var);
// If this key exists in main keys
if ( in_array(trim($expbyequal[0]), array_keys($variables)) ) {
// Compare value with stored value
if ( $variables [trim($expbyequal[0])]['value'] == trim($expbyequal[1]) ) {
$match = true;
}else{
$variables[trim($expbyequal[0])]["value"] = trim($expbyequal[1]);
$match = false;
}
}
}
return $match;
}
updateTheValue($variables,$variable);
print_r($variables);
使用此功能,您将更改主键中存在的键的数据值。您不需要使用$testing变量,因为引用会&改变您的主数组。
TA贡献1868条经验 获得超4个赞
希望这可以解决您对问题的回答:)
$variable = "own=1,contract_start=1";
function updateTheValue($variables,$variable) {
// Split variable looking for into name and value
$vars = explode(",", $variable);
$match = false;
foreach ($vars as $var){
$expbyequal = explode("=", $var);
// If this variable is set
if (array_key_exists($expbyequal[0],$variables)){
// Compare value with stored value
if ( $variables[trim($expbyequal[0])]['value'] == trim($expbyequal[1])) {
$match = true;
}else{
$variables[trim($expbyequal[0])]['value'] = trim($expbyequal[1]);
$match = false;
}
}
}
return $variables;
}
$variables = updateTheValue($variables,$variable);
echo "<pre>";
print_r($variables);
- 3 回答
- 0 关注
- 271 浏览
添加回答
举报