字符串到一个数组,然后 foreach

String to an array and then foreach

我有一个可变字符串,它被传递给一个和数组,然后是 foreach,它只是不想工作。下面是我使用的代码。

$explode = $_obj->getModDependencies();
//this variable will returns/echos the string as @ModA,@Mod_b,@Mod3 etc (yes @ is in each value) 

foreach 和数组 php 代码使用

$arr = array($explode);
foreach ($arr as $value) {
echo '<a href="'.$this->getUrl().'mod?mod_id='.$value.'">'.$value.'</a>';
}

如果我使用上面的代码,它会在每个值的末尾回显一个超链接 (http://myurl/mod?mod_id=@ModA,@Mod_b,@Mod3),但我想回显每个值的每个超链接。

这将是

http://myurl/mod?mod_id=@ModA

http://myurl/mod?mod_id=@Mod_b

等等。

但是,如果我将实际变量输出字符串直接放入数组中,它会显示出我想要的效果(请参阅下面有效的代码)

$arr = array(@ModA,@Mod_b,@Mod3);
foreach ($arr as $value) {
echo '<a href="'.$this->getUrl().'mod?mod_id='.$value.'">'.$value.'</a>';
}

任何帮助都会很棒!!

当您的变量 $explode 将是一个字符串 '@ModA,@Mod_b,@Mod3' 时,您必须 explode 它。

$arr = explode(',', $explode);
foreach ($arr as $value) {
    echo '<a href="'.$this->getUrl().'mod?mod_id='.$value.'">'.$value.'</a>';
}
$arr = array($explode);

这就是问题所在,只是说 array() 中的某些内容并不能真正使它成为您期望的数组。你只给了它 1 个参数。

你也提到$explode的值是这样的@ModA,@Mod_b,@Mod3。仅仅通过命名一些东西 $explode 不会爆炸它。得自己爆了

$arr=explode(",","@ModA,@Mod_b,@Mod3"); 
//$arr=explode(",",$explode) in your case

完成后,您的循环就可以了

foreach ($arr as $value) {
echo '<a href="'.$this->getUrl().'mod?mod_id='.$value.'">'.$value.'</a>';
}

Fiddle