Использование глобального массива в функции PHP

0

У меня есть массив, объявленный в начале моего кода

    $animal = array (
    "Dog",
    "Cat");

Теперь я хочу иметь возможность использовать эти значения в рамках метода. Я хочу держаться подальше от доступных глобальных решений и задавался вопросом, есть ли способ сделать это, создав массив снова?

например, создать новый массив

$animal_store = array();

а затем цикл через исходный массив и добавить значения в новый массив. Это возможно?

  • 1
    $animal_store = $animal; ?!
  • 0
    Что @Rizier123 Rizier123 сказал или поместил массив в сеанс.
Показать ещё 2 комментария
Теги:
arrays

3 ответа

1

Любой из этих примеров поможет?

$animals = ['Dog', 'Cat', 'Cobra Kai'];

class Zoo {
  protected $animals;

  public function setAnimals($animals)
  {
    $this->animals = $animals;
  }

  public function getAnimals()
  {
    return $this->animals;
  }
}

class NoInvestorsZoo extends Zoo {

  public function __construct()
  {
     // We have nothing to start out with, hopefully we can setAnimals some time...
  }

}

class LotsOfInvestorsZoo extends Zoo {

  public function __construct($animals)
  {
     $this->setAnimals($animals);
     // No serious investor would start a zoo without having animals!
  }

}

// For our zoo to be populated we could...

$iLoveAnimals = new NoInvestorsZoo;
// After lots of lunch meetings and fund raisers...
$iLoveAnimals->setAnimals($animals); // Hooray!!

// Meanwhile

$capitalistPigsRUs = new LotsOfInvestorsZoo($animals);
// Mohahaha!

В любом случае мы могли бы тогда

$iLoveAnimals->getAnimals();

Или

$capitalistPigsRUs->getAnimals();


Поэтому рассмотрим следующий пример.

$array = ['Dog', 'Cat', 'Giraffe']; // Our animals array

function animalsInOurZoo($animals) // Our function takes one argument
{
  foreach ($animals as $animal) // Loop through our array
    echo $animal . '\n'; // Print out each item.
}

animalsInOurZoo($array); // We pass our animals into our function

Теперь; вы хотите передать массив в свою функцию и вместо этого напечатать каждый элемент, вы хотите, чтобы HINT нажимал HINT элементы в другой массив.

Я предлагаю, чтобы ваша функция возвращала массив и назначала переменную вашей возвращенной функции.

  • 0
    Мне нравится это, но это все еще требует прямого вызова к исходному массиву
  • 0
    Хорошо, я думаю, вы могли бы объединить ваши массивы? Вы пишете в своем посте, что хотите использовать массив внутри метода, у вас есть класс или вы действительно имеете в виду функцию?
Показать ещё 3 комментария
0

Да, это возможно

$animal = array (
    "Dog",
    "Cat"
);
function addNew(){
    global $animal;
    // just by adding this you can access the array
}

Поэтому, если вы не хотите использовать global, попробуйте записать массив в другой файл, скажем config.php. Затем включите его в функцию и верните массив

config.php

$animal = array (
    "Dog",
    "Cat"
);

ваша текущая страница

function getArray(){
    require('config.php');
    if(is_array($animal))
        return $animal;
    else
        return false;
}

затем назовите его функцией u

function doJob(){
    echo "<pre>";
    $animal = getArray();
    var_dump($animal);
}
  • 3
    «Я хочу держаться подальше от глобального» ...
  • 0
    Нужно ли создавать новый файл, чтобы решить эту проблему? Не могу ли я создать метод, который будет искать исходный массив и затем добавлять значения из него в новый массив, объявленный в методе?
Показать ещё 1 комментарий
0
class Test {
    public static $animal = array("cat", "dog");
}

И теперь вы можете использовать этот статический член во всех своих методах

Ещё вопросы

Сообщество Overcoder
Наверх
Меню