Передача массива данных в частную функцию в CodeIgniter/PHP? [Facepalm]
Так что я подумал, что это должно быть легко, но я здесь и эпично провалюсь (как говорят на interwebz).
Итак, вот мой код:
function xy() {
$array['var1'] = x;
$array['var2'] = y;
echo $this->_z;
}
function _z($array) {
$xy = $x.$y;
return $xy;
}
Так почему же этот, казалось бы, простой код не работает? Я знаю, что с представлениями вы можете передавать массивы, а переменные доступны в представлениях только с заголовком их массива, но почему это не работает в этом случае?
Джек
3 ответа
Так как 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;
}
Вы можете имитировать поведение представлений CI, которое вам нужно, с помощью встроенной функции PHP extract () (именно так 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();
Одно из лучших объяснений доступа к массиву от функции к частной функции. спасибо код мне помог
function _normal()
{$arrayVariable = "значение, которое вы хотите передать";
echo $this->_toPrivateFuction($arrayVariable);
}
функция _toPrivateFuction($arrayVariable) {
// или распечатайте, чтобы проверить, есть ли у вас желаемый результат
print_r(arrayVariable);
// если да, то вы готовы к работе!
return $arrayVariable;
}