这似乎是一件简单的事情,但我无法找到答案。我想改变变量$ smartpath的值,如果它已设置但无法弄清楚如何。这是数组:
$tags_header = array(
$advertiser = isset( $_GET["advertiser"] )? $_GET["advertiser"] : false,
$agency = isset( $_GET["agency"] )? $_GET["agency"] : false,
$automotive = isset( $_GET["automotive"] )? $_GET["automotive"] : false,
$education = isset( $_GET["education"] )? $_GET["education"] : false,
$financial = isset( $_GET["financial"] )? $_GET["financial"] : false,
$retail = isset( $_GET["retail"] )? $_GET["retail"] : false,
$travel = isset( $_GET["travel"] )? $_GET["travel"] : false,
$search = isset( $_GET["search"] )? $_GET["search"] : false,
$social = isset( $_GET["social"] )? $_GET["social"] : false,
$local = isset( $_GET["local"] )? $_GET["local"] : false,
$smartpath = isset( $_GET["smartpath"] )? $_GET["smartpath"] : false,
$halogen = isset( $_GET["halogen"] )? $_GET["halogen"] : false,
$kenshoo = isset( $_GET["kenshoo"] )? $_GET["kenshoo"] : false,
$techvalidate = isset( $_GET["techvalidate"] )? $_GET["techvalidate"] : false,
$infinityawards = isset( $_GET["infinityawards"] )? $_GET["infinityawards"] : false,
);
我有这个代码来改变它,但它似乎添加了两次
if (isset( $_GET["smartpath"] )) {
$tags_header[$smartpath] = "SmartPath Case Study";
}
$tag_string_for_header = implode( ', ', array_filter( $tags_header ));
当我回显$ tag_string_for_header时,我得到了..
Smartpath Case Study, SmartPath Case Study
期望的结果应该是..
SmartPath Case Study
答案 0 :(得分:0)
好的,这就是我在这里看到的 -
我不知道是否定义了数组中的任何变量。如果不是,则会为每个值分配一个数字键,因此您的数组实际上如下所示:
$tags_header = array(
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
'SmartPath Case Study',
false,
false,
false,
false,
);
所以当你以后这样做时:
if (isset( $_GET["smartpath"] )) {
$tags_header[$smartpath] = "SmartPath Case Study";
}
你实际上在说:
if (isset( $_GET["smartpath"] )) {
$tags_header[0] = "SmartPath Case Study";
}
因为未定义$smartpath
。毫不奇怪,你的新阵列看起来像这样:
$tags_header = array(
'SmartPath Case Study',
false,
false,
false,
false,
false,
false,
false,
false,
false,
'SmartPath Case Study',
false,
false,
false,
false,
);
这就是array_filter返回2个值的原因。
为避免这种情况,您应该将键分配给初始数组:
$tags_header = array(
'advertiser' => isset( $_GET["advertiser"] )? $_GET["advertiser"] : false,
'agency' => isset( $_GET["agency"] )? $_GET["agency"] : false,
'etc' => '...'
);
并使用键而不是未声明的变量覆盖它们:
if (isset( $_GET["smartpath"] )) {
$tags_header['smartpath'] = "SmartPath Case Study";
}