0

如果我能让它工作,这是一个绝妙的小技巧——我有来自数十个表的数百个数据列,分布在十几个数据表单(它们是 HTML 打印表单)中,它们都是带有嵌入式 php 变量的 html。很正常。然而,客户需要知道哪个领域在哪里——这是一个非常好的问题。

那我做了什么?我研究了一个解决方案,该解决方案允许来自数据库的键数组放弃它们的列名。一个绝妙的举动!除了我需要通过可变变量来完成,猜猜看,它们在 foreach 循环中不起作用。

这是代码

   if ($_REQUEST['data']=="false"){
        $supera = array("RowService", "RowSite", "RowCustomer", "RowEngineer"); //there can be many of these they are key'd arrays $RowService['column_name_1']; is the format
        foreach($supera as $super){
            foreach(${$super} as $key=>$value){
                if (!is_numeric($key)){
                    ${$super}[$key] = "<span style=\"color:pink;\">".$key."</span>";
                }
            }
        }
    }

如您所见,我想要一个简单的终止开关机制来剪切和粘贴不再显示真实数据的键数组,而是显示(粉红色)列名和(可能)表名也。已经有很多代码,如果它可以工作,这将是一个绝妙的选择

编辑:这是 PHP 错误:

 Warning: Invalid argument supplied for foreach()

编辑:代码实际上已经有效:修复是为了测试 is_array()

 if(is_array(${$super})) foreach(${$super} as $key=>$value){

会起作用,而不是仅仅

 foreach(${$super} as $key=>$value){
4

3 回答 3

1

我不确定你想要实现什么,但你的代码(简化)工作得很好:

$a = array("asd", "qwe");
$asd = array("a" => 1, "b" => 2, "c" => 3);
$qwe = array("d" => 4, "e" => 5, "f" => 6);

foreach ($a as $item)
{
    foreach ($$item as $key => $value)
    {
        echo $key . ": " . $value . "<br />";
    }
}

输出:

a: 1
b: 2
c: 3
d: 4
e: 5
f: 6

您的一个变量很可能是空的(不是数组),这就是您收到该警告的原因。

于 2014-03-20T10:38:08.637 回答
0

就个人而言,我发现可变变量是一个非常糟糕的主意。有几种方法可以解决它。

例如:

$process = array(&$RowService,&$RowSite,&$RowCustomer,&$RowEngineer);
foreach($process as $p) {
    foreach($p as $k=>$v) {
        $p[$k] = "<span style=\"color:pink\">".$v."</span>";
    }
}

使用引用意味着您可以影响原始变量。

如果上面的方法不起作用(我对引用 XD 不是很好),试试这个:

$process = array($RowService,$RowSite,$RowCustomer,$RowEngineer);
foreach($process as $p) {
    foreach($p as $k=>$v) {
        $p[$k] = "<span style=\"color:pink\">".$v."</span>";
    }
}
list($RowService,$RowSite,$RowCustomer,$RowEngineer) = $process;
于 2014-03-20T10:33:17.037 回答
0
As per my understanding of your requirement.

If you want to get table name with pink color then you just need to use below code 

$supera = array("RowService", "RowSite", "RowCustomer", "RowEngineer"); //there can be many of these they are key'd arrays $RowService['column_name_1']; is the format
$super = array();
        foreach($supera as $key=>$value){
                if (!is_numeric($value)){
                    $super[$value] = "<span style=\"color:pink;\">".$value."</span>";
                }
        }
        print_r($super);
于 2014-03-20T11:34:25.583 回答