duanjuete9206 2017-06-02 14:05
浏览 50
已采纳

替换php中的数组值[重复]

I suspect the answer to this is incredibly simple and I am bracing myself for a down vote, however, having read this about changing values, trying to implement array_replace() and trying out the 'passing by reference' I have have not solved my simple problem.

$levelState is a 16 item array populated via array_push with either a string 'locked' or 'unlocked', which may print something like this:

Array ( [0] => unlocked [1] => unlocked [2] => locked [3] => locked [4] => locked [5] => locked [6] => locked [7] => locked [8] => locked [9] => locked [10] => locked [11] => unlocked [12] => unlocked [13] => unlocked [14] => unlocked [15] => unlocked )

Under certain circumstance levels below a certain level should be unlocked.

//Function to unlock lower levels if, manually passed. 
function unlockLowerLevels($x) {
    while($x > 0) {
        $levelState[$x] = 'unlocked';
        echo $x;
        $x--;
    }
}
unlockLowerLevels($int);

This function does not make any change to array elements, but does echo a countdown. I would appreciate any help. Thanks.

</div>
  • 写回答

1条回答 默认 最新

  • dsmupo6631 2017-06-02 14:08
    关注

    You need to pass $levelState into the function, see PHP: Variable Scope. So either pass it by reference:

    function unlockLowerLevels(&$array, $x) {
        while($x > 0) {
            $array[$x] = 'unlocked';
            echo $x;
            $x--;
        }
    }
    unlockLowerLevels($levelState, $int);
    

    Or return the new array:

    function unlockLowerLevels($array, $x) {
        while($x > 0) {
            $array[$x] = 'unlocked';
            echo $x;
            $x--;
        }
        return $array;
    }
    $levelState = unlockLowerLevels($levelState, $int);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部