我有以下代码片段,当某人安装Facebook标签时,该代码应该从返回的URL创建一个逗号分隔的字符串:
$tabs_added = $_GET['tabs_added'];
$tabs_added_array = array();
foreach($tabs_added as $key => $value){
$tabs_added_array[] = $key;
}
$the_tabs = implode(',', $tabs_added_array);
该页面由Facebook调用并返回,如下所示:
tabs.php?tabs_added[1202358366491085]=1&tabs_added[144695175064017]=1
&tabs_added[676066073448810]=1#_=_
由于一些奇怪的原因,它产生的字符串是:
1202358366491085,144695175064017,676066073448810,0,1,2
正如您所看到的,开头是正确的,但随后它无缘无故地添加了0,1,2
。为什么这样,我怎么能避免这个?
答案 0 :(得分:0)
您的数组如下所示:
[0]=>[1202358366491085]
[1]=>[144695175064017]
[2]=>[676066073448810]
在foreach之后尝试使用:var_dump($tabs_added_array);
。
字符串得到两者。您显示的代码不会产生数组的索引。
我自己测试了这个,这是我的网址:
test.php?
tabs_added[1202358366491085]=1&tabs_added[144695175064017]=1
&tabs_added[676066073448810]=1#_=_
我的代码:
$tabs_added = $_GET['tabs_added'];
$tabs_added_array = array();
foreach($tabs_added as $key => $value){
$tabs_added_array[] = $key;
}
$the_tabs = implode(',', $tabs_added_array);
var_dump($tabs_added_array);
代码中必须有其他内容,您不会告诉我们您是否知道。
答案 1 :(得分:0)
我最终这样做是为了解决我的问题:
foreach($tabs_added_array as $key => $val) {
if(strlen($val) <= 3)
unset($tabs_added_array[$key]);
}
是的,这是一个肮脏的修复。但我不知道怎么做。它没有解决问题,但它是一个解决方案。