dsfovbm931034814 2018-04-15 02:03
浏览 59
已采纳

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?

  • 写回答

2条回答 默认 最新

  • doucaishou0074 2018-04-15 02:06
    关注

    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;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛