php修改数组值

  • A+
所属分类:php

PHP访问数据可以使用foreach,有两种使用方式:

	foreach($product_array as $product)
	{
		//这里是代码
	}

	foreach($product_array as $k => $v)
	{
		//这里是代码
	}

foreach来遍历数组,所操作的是指定数组的一个拷贝,而不是数组本身。如下面的例子,并没有修改数组本身。

$info_array = array('a' => "Alibaba");

foreach($info_array as $k => $v)
{
    //这里修改失败
    //修改方法修改的并不是$info_array 本身
    //只是修改了$info_array的一个拷贝,因此对$info_array没有影响。
    $v = "not alibaba";

    //这里修改成功
    //如果想修改数组本身,可以用这种方式
    //虽然$k和$v一样也是拷贝的,但拷贝的$k的值还是和原数组的$k的值是一样的,所以这样就可以成功了
    $info_array[$k] = "not alibaba";
}

另外一种修改数组的方法:可以很容易地通过在 $v 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。例如:

$info_array = array('a' => "Alibaba");

//这里使用了引用的方式
foreach($info_array as $k => &$v)
{
    //这块可以修改$info_array[$k]成功
    $v = "not alibaba";
}

echo $info_array['a'];  //输出: not alibaba

//使用了引用要注意取消引用,例如下面的语句也会修改数组$info_array最后一个元素值
$v = "a a a a";
echo $info_array['a'];  //输出: a a a a

//因此使用引用时,在修改完数组,最好要及时取消引用,取消引用方法为:
unset($v);

因此使用引用时,最好及时取消引用,例如:

$info_array = array('a' => "Alibaba");

//这里使用了引用的方式
foreach($info_array as $k => &$v)
{
    //这块可以修改$info_array[$k]成功
    $v = "not alibaba";

    //取消引用
    unset($v);
}
$v = "aaaa";
echo $info_array['a']; //输出not alibaba



  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: