Передача массива данных в частную функцию в 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();

Ссылка: http://php.net/manual/en/function.extract.php

Одно из лучших объяснений доступа к массиву от функции к частной функции. спасибо код мне помог

      function _normal()

{$arrayVariable = "значение, которое вы хотите передать";

      echo $this->_toPrivateFuction($arrayVariable);

}

функция _toPrivateFuction($arrayVariable) {

// или распечатайте, чтобы проверить, есть ли у вас желаемый результат

      print_r(arrayVariable);

// если да, то вы готовы к работе!

      return $arrayVariable;

}

Другие вопросы по тегам