Php 修改通过引用传递的变量的值

Php 修改通过引用传递的变量的值,php,Php,我希望能够修改通过引用传递给函数的变量的值 <?php function invoke($what) { $args = func_get_args(); return call_user_func_array($what, $args); } function page(&$page) { return $page; } $page = array(); $page['contex

我希望能够修改通过引用传递给函数的变量的值

<?php
    function invoke($what) {
        $args = func_get_args();
        return call_user_func_array($what, $args);
    }

    function page(&$page) {
        return $page;
    }

    $page = array();
    $page['context'] = 'view';
    invoke('page', $page);
    ?>

调用invoke()时,会收到警告: page()的参数1应为引用,值在invoke()中给定

请问我做错了什么


谢谢

您在函数invoke()中传递了两个值,并且只得到一个值。请使用函数lke
函数invoke($what,$second)
或者只传递一个值,如
invoke($page)

不一定。调用($page)无效。invoke()用于调用page(),然后传入$page的值。这就是
call\u user\u func\u array($what,$args)
在那里做的事情。@drecute他收到警告,这是导致warning@drecute我在哪里失踪了?或者我的答案不是解决你的问题吗?考虑重构你的代码:<代码>函数调用($WORD,数组$ARGs= ARRAY()){返回CaluthUsSeriFuffyRead数组($$,$ARGS);}调用(“页面”,数组(和$PAGE));<代码>。这样,您将传递对
$page
的引用,而不是其值。(您的实现也不正确-您的
$args
仍然包含
$what
作为第一个参数)。谢谢。出于好奇,func_get_args()的作用是什么?我的理解是,它获取传递给invoke()的任何其他参数。在我的情况下,这将是$page。将获取当前函数的所有参数,而不仅仅是可变参数。那么为什么我仍然需要显式地传递
$args=array()
才能调用()?func_get_args看到两个args。call\u user\u func\u数组看到'page()'并将$args中包含的任何内容传递给'page()。@dcorder我很确定调用时间引用在这里也不起作用
func\u get\u args()
返回包含参数副本的数组。不保留引用。