Функция, чтобы функция получала массив переменных

#php

#php

Вопрос:

посмотрите приведенный ниже код:

 $myvar = array();

first();

function first()
{
    global $myvar;

    $array(apple, banana, orange);
}

second();

function second()
{
    global $myvar;

    print_r($array);
}
  

затем на выходе вторая функция не отображает массив … =/ я не понимаю, как функция получает массив переменных из другой функции…

Комментарии:

1. Что вы хотите сделать? $array в первой функции не имеет смысла — <code>$array(…);</code> фактически вызывает функцию по имени, которое находится в переменной $array — но переменная не инициализирована.

Ответ №1:

Две вещи

$myvar нигде не используется в ваших функциях;

вы должны узнать, как добавить элемент в объявленный массив.

     function first()
    {
        global $myvar;        
        $myvar=array('apple','banana','orange');
    }
  

Комментарии:

1. тогда что, если использовать с $myvar = explode(«;», $line)?

2. @user: Что $line откуда это взялось?

3. я только привожу пример… $ line = «яблоко; банан; апельсин;»; потому что у меня проблемы с чтением и записью файла php.. я вижу, что функция не может прочитать массив из глобальной переменной.

Ответ №2:

Вы нигде не устанавливаете переменную $array .

Ответ №3:

Не используйте глобальные переменные только потому, что вы ленивы. Вместо этого используйте возвращаемые значения и параметры функции

 function first () { return array('apple','banana', 'orange'); }
function second ($param) { print_r($param); }
$fruit = first();
second($fruit);
  

Ответ №4:

Вы запрашиваете переменную $myvar в global $myvar; строке, но затем пытаетесь использовать переменную с именем $array .

Попробуйте использовать строки:

 $myvar = array('apple','banana','orange');
  

и

 print_r($myvar);
  

Ответ №5:

$array не входит в область действия функции 2.

Ответ №6:

я подбираю правильный код, который выглядит следующим образом:

 $myvar = array();

first();
second();

function first(){
    global $myvar;
    array_push($myvar, 'apple', 'banana', 'orange');
}
function second(){
    global $myvar;
    print_r($myvar);
}
  

array_push добавляет новые элементы в массив.

Ответ №7:

Попробуйте это с использованием класса вместо двух функций с одной глобальной переменной:

 class functions {

    $myvar = array();

    function first(){
        $this->myvar = array('apple', 'banana', 'orange');
    }

    function second(){
        print_r($this->myvar);
    }
}

$fn = new functions();

$fn->first();
$fn->second();
  

Не стоит использовать глобальные переменные (как вы сделали в своем вопросе).

Комментарии:

1. … сохраняющаяся грамматика доски объявлений и предоставление нерелевантных советов вместо объяснения, полезного для OP.

2. Используйте правильную заглавную букву. Мем «Глупые глобалы — зло» не слишком полезен в мелкой однострочной версии. И перезапись двух простых функций в объект не объясняет, на что наткнулся OP.

3. Правила нет. Но разрешено отклонять ответы по любой причине. И ваш всегда выглядит так, как будто вы ошибочно принимаете SO за доску объявлений.

4. Я готов не обращать внимания на ваш некачественный стиль написания (отрицательный отзыв глуп, поскольку вы все равно не хотите его менять). Но, как я уже говорил вам, совет все еще бесполезен. Также на самом деле нет смысла постоянно запрашивать о недостатках, когда вы все равно не слушаете.

5. @markus Я должен согласиться с Нилом в этом вопросе. Полное изменение сообщений других людей и «вкладывание слов в их уста» — плохая практика, ИМО, и ее следует избегать.