【问题标题】:String to an array and then foreach字符串到数组然后foreach
【发布时间】:2023-03-04 09:39:01
【问题描述】:

我有一个变量字符串,它被传递给一个 and 数组,然后是 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>';
}

任何帮助都会很棒!

【问题讨论】:

    标签: php arrays foreach


    【解决方案1】:
    $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

    【讨论】:

    • 谢谢哥们!!与 $arr=explode(",","".$_obj->getModDependencies()."");并实现了我所需要的。
    • 您不需要在该变量周围加上引号。您可以将该行更改为$arr=explode(",",$_obj-&gt;getModDependencies());
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-07
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2022-11-02
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多