无法在php数组中更改字符串

时间:2015-04-18 10:53:44

标签: php

我试图用<p id=para></p>在PHP数组中包围字符串,这是我的代码。我跑的时候没有任何事情发生。

foreach($i=0;$i < count($tags); $i++){
    $tags[$i] = "<p id=para>" . $tags[$i] . "<p>";
}

标签是我的字符串数组。

4 个答案:

答案 0 :(得分:1)

你需要这样做。

foreach($tags as &$tag){
    $tag = "<p id=para>" . $tag . "</p>";
}

&amp;引用标记而不是复制它,这是你的问题,它不会改变实际数组中的字符串。

答案 1 :(得分:0)

您的代码段中存在一些问题。

首先关闭:您使用的是foreach-loop,但提供的参数就好像是for-loop
您生成invalid HTML,您的id属性需要将值括在"'中,例如:id="para"
您的<p>代码未关闭,而是后跟另一个<p>代码(应为</p>)。

您可以使用for-loop或foreach-loop,但它们的工作方式不同 for循环的写法很像你得到的那个:

 for($i=0;$i < count($tags); $i++) { ...

虽然foreach看起来更像:

foreach($tags as &$tag) { ...

注意&之前的$tag符号,&表示它是对象的引用,这意味着,如果您更改foreach loop内的对象,它实际上会被改变,而不仅仅是在foreach范围内。

这意味着您可以立即编辑$tag对象,而不是从阵列中访问它 如果您宁愿从数组中访问它,但仍希望使用foreach,则可以通过以下方式获取索引(键)和值:

foreach($tags as $key => $value) {
   $tags[$key] = 'html' . $value . 'endhtml';
}

答案 2 :(得分:0)

您必须决定要使用哪个循环。目前看起来你错了for&amp; foreach循环。


幸运的是,这可以通过两种方式完成。

使用for循环

for($i = 0; $i < count($tags); $i++)
{
    $tags[$i] = "<p id='para'>" . $tags[$i] . "</p>";
}

使用foreach循环

如前所述,但没有真正的解释:

foreach($tags as &$tag){
    $tag = "<p id='para'>" . $tag . "</p>";
}

&$tag 引用,而不是副本,因此它会更新数组中的字符串。你尝试这样做的方式,只会改变它的副本。

最后,最后一件事 - 如果我建议,在指定html标签的属性时开始使用撇号/引号。它更干净,更有效,更好看。

答案 3 :(得分:-1)

使用

for($ i = 0; $ i&lt; count($ tags); $ i ++){

$tag[] = "<p id='para'>" . $tags[$i] . "<p>";

}

或使用

foreach($ tag as $ tg){

$tag[] = "<p id='para'>" . $tg . "</p>";

}