在名称中显示带特殊字符“$”或“ - ”的变量
问题描述:
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显示它时,它不会工作。那么,我应该怎么做,删除数据库表中的字段名称而不编辑?
答
我不知道你在哪里得到这个类,但在这里
有这么多的无效命名实例
$goal
campaign-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] =>
)
我会建议你创建更有效的变量名,而不是这样的转换
答
是否这样?
$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一样简单。
当我尝试使用foreach显示它,它不会工作 - 应该工作。请详细说明。 – 2012-04-20 10:05:26
这样做会是错误的例子: echo $ campaign - > $ limit; 对不对? – Jetoox 2012-04-20 10:06:40
对不起,你是怎么得到这个班的? '$'不是在mysql中命名为 – Baba 2012-04-20 10:07:16