Я хочу создать массив, который определен в моем коде function.php, поэтому мне не нужно передавать массив через свой дырочный код. Но это не сработает …
Это пример моего function.php:
<?php
define("titleArray", array());
function foo(){
echo $this->titleArray;
}
function boo(){
array_push($this->titleArray, "Hello");
}
Но это не работает … Как я могу это исправить, чтобы каждая функция имела доступ к массиву?
Привет
Я предлагаю вам хранить ваш массив глобально, используя $GLOBALS
и вместо того, чтобы использовать echo
напечатать массив, использовать print_r
метод вместо.
<?php
$GLOBALS["titleArray"] = array('world');
function foo(){
print_r($GLOBALS["titleArray"]);
}
function boo(){
array_push($GLOBALS["titleArray"], "Hello");
print_r($GLOBALS["titleArray"]);
}
foo();
boo();
Есть два способа сделать это:
global
в каждой функции$GLOBALS[]
однажды вне функции$titleArray = [];
// $GLOBALS['titleArray'] = [];
function foo(){
global $titleArray;
print_r($titleArray);
// print_r($GLOBALS['titleArray']);
}
function boo(){
global $titleArray;
array_push($this->titleArray, "Hello");
// array_push($GLOBALS['titleArray'], "Hello");
}
просто удали $this
<?php
define("titleArray", array());
function foo(){
echo titleArray;
}
function boo(){
array_push(titleArray, "Hello");
}
обратите внимание, что значения массива разрешены после версии php 7.0
Как правило, мы используем define
чтобы сделать постоянное значение, которое никогда не обновляется, используйте вместо этого класс
<?php
class abc {
$titleArray = [];
function foo(){
echo $this->titleArray;
}
function boo(){
array_push($this->titleArray, "Hello");
}
}
Функция define () определяет константу. Константы очень похожи на переменные, за исключением следующих различий: Значение константы нельзя изменить после ее установки.