php 动态变量的问题.

Tuesday 发布于 2013/05/08 18:00
阅读 488
收藏 0
PHP

$array['a']['b']['c'] = 100'

$_GET['var'] = "['a']['b']['c']"; // 这是用户提交的.

echo $_GET['var'];  怎么把array数组中对应的值100打印出来?

加载中
0
Narky
Narky
为什么要让用户提交  ['a']['b']['c'] 这种变态的值过来。。。
你打球像那谁
你打球像那谁
同意
0
mark35
mark35
这种安全大坑还要自己挖自己埋自己么
0
南湖船老大
南湖船老大

LZ专搞旁门左道

梅开源
梅开源
旁门左道挺有趣的。
Tuesday
Tuesday
有此需求.
0
每天打起精神即可
每天打起精神即可
好奇葩的提交结果 = =!!
0
Tuesday
Tuesday

唉, 我已经弄出来了.

<?php

$array['a']['b']['c'] = '100';
$_GET['svar'] = "['a']['b']['c']"; 


echo __string_var($_GET['svar']);

function __string_var($arrkey){
    global $array;
    
    # 整理一下key值, 让它变数组.
    $tem = explode('.', trim(strtr($arrkey,array("']['"=>'.')),'[]\''));
    //print_r($tem); // out : Array ( [0] => a [1] => b [2] => c ) 
    
    # 循环起来找对应的值. 不过需要一个中转变量做基础.
    $travar = $array;
    foreach($tem AS $val){
        $travar = $travar[$val];
    }
    return $travar; // 显示100;
}

 

0
P
PGF_高峰
eval($array.$_GET['var']);
fieldinrain
fieldinrain
要 eval( '$array' . $_GET['var'] );
苏生不惑
苏生不惑
试了下,这样不行呢?
0
梅开源
梅开源

这个实现设计不好

搞成多维数组形式让用户提交,用户手工填写容易格式出错而且麻烦,合并的话自己又难处理

不如搞成a-b-c之类,split了对人对己都好

0
Tuesday
Tuesday

引用来自“梅开源”的答案

这个实现设计不好

搞成多维数组形式让用户提交,用户手工填写容易格式出错而且麻烦,合并的话自己又难处理

不如搞成a-b-c之类,split了对人对己都好

其实是在写模板引擎,

需要把变量替换成某个值. 特别是缓存css这儿, 需要这样弄.

0
heran1038
heran1038
查看php手册eval
返回顶部
顶部