为了账号安全,请及时绑定邮箱和手机立即绑定

如何更新数组的值?

如何更新数组的值?

PHP
有只小跳蛙 2022-06-11 18:48:55
我有这个变量$variable = "own=1,contract_start=1";,我想找到这个变量一个数组。数组名称是 $variables 这是我的数组:Array([own] => Array    (        [type] => bool        [value] => 0    )[contr_name] => Array    (        [type] => bool        [value] => 0    )[all_votes] => Array    (        [type] => int        [value] => 0    )[contract_start] => Array    (        [type] => bool        [value] => 0    )[contract_end] => Array    (        [type] => bool        [value] => 0    )[T] => Array    (        [type] => clock        [value] =>     )[a] => Array    (        [type] => int        [value] => 1    )[candi_ID] => Array    (        [type] => int        [value] => 1    )[voter_ID] => Array    (        [type] => int        [value] => 1    )[] => Array    (        [type] =>         [value] =>     ) )如果该值不等于现有值一个数组,所以我想用变量值更新该值。这是我的代码:$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 ( isset($variables [trim($expbyequal[0])]) )  {            // 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;}$testing = updateTheValue($variables,$variable);任何想法都将是可观的。
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

该功能只有几个小改动。

主要问题是您只是在本地副本中更改变量的值,您需要更改要通过引用传递的变量数组以允许它更新原始数据。&在参数前面添加$variables应该这样做。

function updateTheValue(&$variables,$variable) {

此外,当您设置值时,您将元素设置为仅包含值部分的新数组,而不是仅更新值,因此将该行更改为...

$variables[trim($expbyequal[0])]["value"]= trim($expbyequal[1]);


查看完整回答
反对 回复 2022-06-11
?
LEATH

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变量,因为引用会&改变您的主数组。


查看完整回答
反对 回复 2022-06-11
?
MYYA

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);


查看完整回答
反对 回复 2022-06-11
  • 3 回答
  • 0 关注
  • 271 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信