所以我认为这应该很容易,但是,我在这里挣扎......
这是我的代码:
function xy() {
$array['var1'] = x;
$array['var2'] = y;
echo $this->_z;
}
function _z($array) {
$xy = $x.$y;
return $xy;
}
那么,为什么看似简单的代码不起作用呢?我知道你可以通过视图传递数组,并且变量可以在视图中通过它们的数组标题访问,但是,为什么它在这种情况下不起作用?
所以我认为这应该很容易,但是,我在这里挣扎......
这是我的代码:
function xy() {
$array['var1'] = x;
$array['var2'] = y;
echo $this->_z;
}
function _z($array) {
$xy = $x.$y;
return $xy;
}
那么,为什么看似简单的代码不起作用呢?我知道你可以通过视图传递数组,并且变量可以在视图中通过它们的数组标题访问,但是,为什么它在这种情况下不起作用?
因为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;
}
您可以使用 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
关于从函数访问数组到私有函数的最佳解释之一。感谢代码帮助了我
function _normal()
{ $arrayVariable = "你要传递的值";
echo $this->_toPrivateFuction($arrayVariable);
}
函数 _toPrivateFuction($arrayVariable) {
// 或者打印来检查你是否有想要的结果
print_r(arrayVariable);
// 如果是,那么你准备好了!
return $arrayVariable;
}