在名称中显示带特殊字符“$”或“ - ”的变量

问题描述:

stdClass Object 
(
    [campaign-ID] => 1 
    [campaign_name] => Sample Campaign 
    [start_duration] => 2012-04-17 
    [end_duration] => 2012-04-17 
    [activity$] => 
    [survey_settings] => Ordering K-Cup Packs 
    [$limit] => sample 
    [$goal] => 
) 

如何删除 - 和$?使用PHP? 因为-$符号在mysql中有效,但是当我尝试使用foreach显示它时,它不会工作。那么,我应该怎么做,删除数据库表中的字段名称而不编辑?

+0

当我尝试使用foreach显示它,它不会工作 - 应该工作。请详细说明。 – 2012-04-20 10:05:26

+0

这样做会是错误的例子: echo $ campaign - > $ limit; 对不对? – Jetoox 2012-04-20 10:06:40

+0

对不起,你是怎么得到这个班的? '$'不是在mysql中命名为 – Baba 2012-04-20 10:07:16

我不知道你在哪里得到这个类,但在这里

有这么多的无效命名实例

$goalcampaign-ID

我不得不重构你的类,它看上去像这

$st= new stdClass(); 
$st->{"campaign-ID"} = 1 ; 
$st->campaign_name = "Sample Campaign" ; 
$st->start_duration = "2012-04-17" ; 
$st->start_duration = "2012-04-17" ; 
$st->{'activity$'} = null ; 
$st->survey_settings = "Ordering K-Cup Packs" ; 
$st->{'$limit'} = "sample" ; 
$st->{'$goal'} = null ; 


$std = new stdClass(); 
foreach($st as $key => $value) 
{ 
    $key = str_replace(array('$',"-"),array('',"_"),$key); 
    $std->{$key} = $value ; 
} 

echo "<pre>" ; 
print_r($std); 

输出

stdClass Object 
(
    [campaign_ID] => 1 
    [campaign_name] => Sample Campaign 
    [start_duration] => 2012-04-17 
    [activity] => 
    [survey_settings] => Ordering K-Cup Packs 
    [limit] => sample 
    [goal] => 
) 

我会建议你创建更有效的变量名,而不是这样的转换

+0

我也会试试这个。 :) – Jetoox 2012-04-20 10:14:22

+0

只是再次更新,以便您的最终输出仍然有效 – Baba 2012-04-20 10:18:14

是否这样?

$cleaned = new stdClass(); 
foreach($obj as $key => $val) { 
    $newKey = str_replace(array('$','-'), '', $key); 
    $cleaned->$newKey = $val; 
} 
print_r($cleaned); 
+0

我会尝试这一个。 :) – Jetoox 2012-04-20 10:09:07

+0

我编辑它,因为它导致无限循环,您需要创建一个新的对象与清洁的键。 – 2012-04-20 10:14:19

删除无效字符PHP是为RM * .PHP一样简单。