PHP如何循环关联数组而不复制变量?

时间:2012-06-27 14:36:31

标签: php arrays loops foreach associative-array

对于带有简单for语句的常规数组,这很容易做到。 EG:

    $b= array('A','B','C');
    $s=sizeof($b);
    for ($i=0; $i <$s ; $i++) $b[$i]='your_face';
    print_r($b);

但如果我使用assoc数组,我似乎无法轻易做到这一点。我当然可以使用foreach循环,但它实际上是复制$ value变量而不是返回指向实际数组实体的指针。 EG,这不起作用:

    $b= array('A'=>'A','B'=>'B','C'=>'C');
    foreach ($b as $v) $v='your_face';
    print_r($b);

当然,我们可能会有这样一个愚蠢的想法:

    $b= array('A'=>'A','B'=>'B','C'=>'C');
    foreach ($b as $k => $v) $b[$k]='your_face';
    print_r($b);

但这将是一个尴尬的解决方案,因为它将冗余地重新创建从未使用的$ v变量。

那么,循环关联的更好方法是什么?

2 个答案:

答案 0 :(得分:3)

你可以尝试:

foreach(array_keys($b) as $k) {
    $b[$k] = 'your_face';
}

print_r($b);

有关array_keys的解释,请参阅以下链接:http://php.net/manual/en/function.array-keys.php

答案 1 :(得分:2)

不确定这是不是你想要的,但这里是:

foreach(array_keys($b) as $k) $b[$k] = 'your_face';