Я работал над системой цветовой палитры, где многомерный массив содержит разные цветовые палитры. EX:
$palette['1']['borderColor'] = "black";
$palette['2']['borderColor'] = "white";
У меня есть функция, которая должна возвращать элемент цветовой палитры при вызове, но по какой-то причине она ничего не возвращает. Вместо этого он говорит «Неопределенная переменная: палитра» EX:
$palette['1'] = array(
"borderColor"=> "#222222",
"divColor1"=> "#00f2ff",
"divColor2"=> "#222222",
"headerColor"=> "rgba(38, 38, 38, 0.5)",
"color1"=> "#00f2ff",
"color2"=> "#e9ffdd");
function getItem($number, $item) {
return $palette[$number][$item];
}
$borderColor = getItem('1', 'borderColor');
echo "borderColor is> " . $borderColor . " <.";
//returns "borderColor is> <."
Какие-либо предложения?
Функция, которую вы написали, не имеет фактического значения палитры. Просто передайте нужную палитру в функцию.
$palette['1'] = array(
"borderColor"=> "#222222",
"divColor1"=> "#00f2ff",
"divColor2"=> "#222222",
"headerColor"=> "rgba(38, 38, 38, 0.5)",
"color1"=> "#00f2ff",
"color2"=> "#e9ffdd");
function getItem($palette, $number, $item) {
return $palette[$number][$item];
}
$borderColor = getItem($palette,'1', 'borderColor');
echo "borderColor is> " . $borderColor . " <.";
Другой способ сделать это — создать простой класс, в котором вы можете вызывать свои палитры.
class Palette {
public function __construct($palette){
$this->borderColor = $palette['borderColor'];
$this->divColor1 = $palette['divColor1'];
$this->divColor2 = $palette['divColor2'];
$this->headerColor = $palette['headerColor'];
$this->color1 = $palette['color1'];
$this->color2 = $palette['color2'];
}
}
$palette['1'] = array(
"borderColor"=> "#222222",
"divColor1"=> "#00f2ff",
"divColor2"=> "#222222",
"headerColor"=> "rgba(38, 38, 38, 0.5)",
"color1"=> "#00f2ff",
"color2"=> "#e9ffdd");
$black = new Palette($palette['1']);
$white = new Palette($palette['2']);
echo $black->borderColor;
echo $white->borderColor;
На самом деле внутри вашей функции getItem переменная $ палитра недоступен, так что либо вы должны передать его на GetItem функция или просто добавить Глобальный Ключевое слово на вашей функции $ палитра переменная.
Способ 1:
function getItem($palette, $number, $item) {
return $palette[$number][$item];
}
$borderColor = getItem($palette,'1', 'borderColor');
Способ 2:
function getItem($number, $item) {
global $palette; // it will be available here
return $palette[$number][$item];
}
$borderColor = getItem('1', 'borderColor');