PHP Echo массив вне функции - PullRequest
2 голосов
/ 02 августа 2011

Мне любопытно узнать, как отобразить массив вне функции, например, этот код печатает его внутри. но что, если я просто хочу вернуть значения и вывести их наружу?

function myArray() {
    $arr = array('One', 'Two', 'Three', 'four');

    for ($i = 0; $i < count($arr); $i++) {
        echo $arr[$i];
    }
}

myArray();

Надеюсь, что это имеет смысл.

Ответы [ 7 ]

3 голосов
/ 02 августа 2011

Итак, вы не хотите, чтобы echo () находился вне цикла, а в том, что вы хотите, чтобы значения в вашем массиве были доступны.

Используя функцию array () (которая на самом деле является языковой конструкцией ) и предлагая только значения, массив будет «зарезервирован» для вас PHP. Эти клавиши начинаются с 0 и могут быть доступны в квадратных скобках, например:

$myArray = array("first", "second", "third");
echo $myArray[0]; // will echo "first"
echo $myArray[1]; // will echo "second"

Если вы хотите построить массив внутри функции, вам нужно знать о области видимости. Переменные, установленные внутри функций, не доступны вне функций. Для этого вам нужно вернуть массив и зафиксировать возврат этого вызова функции:

function myArray() {
  return array("first", "second", "third");
}

// capture the return value of the myArray() function
$arrayToEcho = myArray();

echo $arrayToEcho[0]; // will echo "first"
1 голос
/ 02 августа 2011

Потому что мне нравится array_walk, альтернативное решение,

$arr = array('One', 'Two', 'Three', 'four');
array_walk($arr, 'echo_it');

function echo_it($item) {
    echo "$item ";
}

но не так просто, как просто print ing

print_r(array('One', 'Two', 'Three', 'four'));

или implode

echo implode(", ", array('One', 'Two', 'Three', 'four'));

Все вышеперечисленное echo будет содержать содержимое массива в той или иной форме. Это зависит от того, какой вывод вы хотите, например, через запятую, или как список & hellip;

0 голосов
/ 02 августа 2011
function myArray() {
    $arr = array('One', 'Two', 'Three', 'four');

    // Here goes whatever you do with $arr

    return $arr;
}

$arr = myArray();
echo $arr[0];

Однако введение жестко закодированных значений, подобных этим внутри функций, не всегда является хорошей идеей, поэтому вы можете использовать альтернативный подход и создать свой исходный массив ($arr) вне функции myArray(), а затем передать его.со ссылкой на функцию.

Таким образом, все, что вы делаете внутри функции для воздействия на $arr, будет видно за пределами функции myArray().

Передача по ссылке

$arr = array('One', 'Two', 'Three', 'four');

function myArray(&$arr) { // Note the ampersand sign (&)!
    // Whatever you do with the original array
    $arr[] = 'Five';
}

myArray($arr);
echo $arr[4]; // Will echo "Five"...
0 голосов
/ 02 августа 2011

Я не совсем уверен, что вы просите.Вы можете использовать print_r или var_dump для печати массива, но это обычно используется только для целей отладки.вы также можете создать такую ​​функцию, которая позволит вам передавать массив в качестве параметра для печати. ​​

function printArray($printArr) {
    $output = "";
    for($i=0; $i < count($printArr); $i++) {
        $output .= $printArr[$i];
    }
    echo $output;
}

$arr = array('One', 'Two', 'Three', 'four');
printArray($arr);
0 голосов
/ 02 августа 2011

Я не совсем уверен, что именно вы спрашиваете, я думаю, что вы имеете в виду, поскольку $ arr объявлен в myArray, это локальная переменная, но вы хотите использовать его вне функции myArray, для этого вы должны вернуть это так:

function myArray() {
    return array('One', 'Two', 'Three', 'four');
}

$array = myArray();

for ($i = 0; $i < count($array); $i++) {
    echo $array[$i];
}

или

print_r(myArray());
0 голосов
/ 02 августа 2011

Попробуйте это:

function myArray() {

    $arr = array('One', 'Two', 'Three', 'four');
    $output = "";
    for($i=0; $i < count($arr); $i++) {
        $output .= $arr[$i] . "<br />";
    }
    return $output;
}

$theValuesIWant = myArray();
echo $theValuesIWant ;
0 голосов
/ 02 августа 2011

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

<?php
  function myArray()
  {
      return array('One', 'Two', 'Three', 'four');
  }

  $arr = myArray();
  echo $arr[1];
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...