PHP函数不从多维数组返回值
I have been working on a color palette system where a multidimensional array holds different color palettes. EX:
$palette['1']['borderColor'] = "black";
$palette['2']['borderColor'] = "white";
I have a function that should return a color palette item when called but for some reason it's not returning anything. Instead it says "Undefined variable: palette"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> <."
Any suggestions?
我一直在研究调色板系统,其中多维数组包含不同的调色板。 EX: p>
$ palette ['1'] ['borderColor'] =“black”;
$ palette ['2'] ['borderColor'] =“white “;
code> pre>
我有一个函数应该在调用时返回一个调色板项,但由于某种原因它没有返回任何东西。 相反,它说“未定义的变量:调色板”EX: p>
$ palette ['1'] = array(
“borderColor”=&gt;“#222222”,
“divColor1”=&gt;“#00f2ff”,
“divColor2”=&gt;“#222222”,
“headerColor”=&gt;“rgba(38,38,38,0.5)”,
“color1” =&gt;“#00f2ff”,
“color2”=&gt;“#e9ffdd”
);
函数getItem($ number,$ item){
return $ palette [$ number] [$ item] ;
}
$ borderColor = getItem('1','borderColor');
echo“borderColor is&gt;”。 $ borderColor。 “&lt;。”;
//返回“borderColor is&gt;&lt;。”
code> pre>
有任何建议吗? p>
div>
The function you wrote does not have the actual palette value.. Just pass the palette you want into the function.
$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 . " <.";
Another way to do this would be to make a simple class in which you could call your palettes.
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;
Actually inside your getItem function the variable $palette is not available so either you've to pass it on your getItem function or just add global keyword on your function's $palette variable.
Way 1:
function getItem($palette, $number, $item) {
return $palette[$number][$item];
}
$borderColor = getItem($palette,'1', 'borderColor');
Way 2:
function getItem($number, $item) {
global $palette; // it will be available here
return $palette[$number][$item];
}
$borderColor = getItem('1', 'borderColor');