2015-03-12 3 views
0

У меня есть массив, объявленный в начале моего кодаИспользование глобального массива в функции PHP

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

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

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

$animal_store = array();

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

+1

'$ animal_store = $ animal;'?! – Rizier123

+0

Что @ Rizier123 сказал или положил массив в сеанс. – Daan

+0

Просто передайте массив в качестве аргумента! – GordonM

ответ

0
class Test { 
    public static $animal = array("cat", "dog"); 
} 

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

-1

Да можно

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

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

config.php

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

текущей страницы

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

затем вызвать его в функции и желание

function doJob(){ 
    echo "<pre>"; 
    $animal = getArray(); 
    var_dump($animal); 
} 
+3

«Я хочу держаться подальше от глобального» ... –

+0

Нужно ли мне создавать новый файл, чтобы решить эту проблему? Могу ли я создать метод, который будет искать исходный массив, а затем добавить значения из него в новый массив, объявленный в методе? – algorhythm

+0

Создав новый файл и включив его в функцию, вы можете получить все, что содержится внутри этого файла, вашей функции. Если вам это тоже не нужно, то передача массива будет следующей лучшей. – itssajan

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 push HINT элементы в другой массив.

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

+0

Мне это нравится, но он по-прежнему требует прямого вызова исходного массива – algorhythm

+0

Хорошо, я думаю, вы можете объединить свои массивы? Вы пишете в своем посте, что хотите использовать массив внутри метода, у вас есть класс или вы на самом деле означаете функцию? – dojs

+0

Все содержится в одном классе. Массив объявлен тем, что я бы рассматривал глобально, однако я все еще не совсем уверен, как PHP его отлаживает, и есть функция, которая не принимает массив в качестве аргумента, но ему необходимо использовать его в функции – algorhythm

Смежные вопросы