Home > Backend Development > PHP Tutorial > php使用foreach循环遍历数组,循环内执行成功了,循环外却不成功?

php使用foreach循环遍历数组,循环内执行成功了,循环外却不成功?

WBOY
Release: 2016-06-06 20:06:08
Original
1119 people have browsed it

<code>            foreach($arr as $value){
                $value=preg_replace("/href=\"\//i",'href="'.$link,$value);
                echo $value."";//此处$value为替换之后的值。
            }
            echo $arr[1];//此处显示的仍为替换前$arr[1]的值。

//请问这个是怎么回事呢?
``</code>
Copy after login
Copy after login

回复内容:

<code>            foreach($arr as $value){
                $value=preg_replace("/href=\"\//i",'href="'.$link,$value);
                echo $value."";//此处$value为替换之后的值。
            }
            echo $arr[1];//此处显示的仍为替换前$arr[1]的值。

//请问这个是怎么回事呢?
``</code>
Copy after login
Copy after login

<code class="php">foreach($arr as &$value){
    $value=preg_replace("/href=\"\//i",'href="'.$link,$value);
    echo $value."";//此处$value为替换之后的值。
}
echo $arr[1];//此处显示的仍为替换前$arr[1]的值。</code>
Copy after login

由于变量作用域的原因,如果你在里面修改了值,且需要保存结果,需要将类型定义为引用类型,即&

改成这样

<code>        foreach($arr as $key=>$value){
            $arr[$key]=preg_replace("/href=\"\//i",'href="'.$link,$value);
            echo $arr[$key]."";//此处$value为替换之后的值。
        }
        </code>
Copy after login

你只是对在循环体内对局部变量$value做了个replace操作,并没有把value还给$arr.

<code>foreach($arr as $key => $value){
    $value=preg_replace("/href=\"\//i",'href="'.$link,$value);
    $arr[$key] = $value;
    echo $value."";//此处$value为替换之后的值。
}
echo $arr[1];//此处显示的仍为替换前$arr[1]的值。</code>
Copy after login

先弄清楚,按值传递和按引用传递吧

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template