PHP 如何在不复制变量的情况下遍历 assoc 数组


PHP how to loop through assoc array without replicating variables?

很容易用一个简单的for语句来处理常规数组。例如:

    $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变量。

那么,循环访问协会的更好方法是什么?

你可以试试:

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

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

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

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