PHP函数不从多维数组返回值

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');

DEMO https://eval.in/988491