1

所以我认为这应该很容易,但是,我在这里挣扎......

这是我的代码:

function xy() {
  $array['var1'] = x;
  $array['var2'] = y;
  echo $this->_z;
}

function _z($array) {
  $xy = $x.$y;
  return $xy;
}

那么,为什么看似简单的代码不起作用呢?我知道你可以通过视图传递数组,并且变量可以在视图中通过它们的数组标题访问,但是,为什么它在这种情况下不起作用?

4

3 回答 3

1

因为function _z不是一个视图。用 调用它$this->_z($array);。视图也由 CodeIgniter 处理,并将变量传递给它们。这不适用于非视图。PHP 不会自动为您执行此操作。

要加载视图,请在其中创建一个视图文件/system/application/views/并调用它$this->load->view('my_view_name', $array);

我会重写你的函数如下:

function xy()
{
    $x = "some value";
    $y = "some other value";

    echo $this->_z($x, $y);
}

function _z($a, $b)
{
    return $a.$b;
}
于 2010-06-15T12:13:57.690 回答
1

您可以使用 PHP 原生函数extract()模仿您想要的 CI 视图行为(CI 就是这样做的)

function xy() {
    $some_array = array(
        'foo' => 'Hello',
        'bar' => 'world'
    );
    echo $this->_z($some_array);
}

function _z($array) {
    extract ($array);
    $xy = "$foo $bar";
    return $xy;
}


xy();

参考: http: //php.net/manual/en/function.extract.php

于 2010-06-16T10:42:04.597 回答
0

关于从函数访问数组到私有函数的最佳解释之一。感谢代码帮助了我

function _normal()

{ $arrayVariable = "你要传递的值";

echo $this->_toPrivateFuction($arrayVariable);

}

函数 _toPrivateFuction($arrayVariable) {

// 或者打印来检查你是否有想要的结果

print_r(arrayVariable);

// 如果是,那么你准备好了!

return $arrayVariable;

}

于 2021-09-16T11:51:35.060 回答