PHP 解引用数组元素

标签 php arrays reference dereference

我有 2 个数组。

$result = array();
$row = array();

Row的元素都是引用,是不断变化的。对于 $row 的每次迭代,我想将 row 的 values 复制到 $result 的条目中,而不是引用。

我找到了一些解决方案,但它们看起来都很糟糕。

$result[] = unserialize(serialize($row));
$result[] = array_flip(array_flip($row));

上面的两个工作,但看起来像很多不必要和丑陋的代码,只是为了按值复制引用数组的内容,而不是复制引用本身。

是否有更简洁的方法来完成此操作?如果不是,最有效的方法是什么?

谢谢。

编辑:如下所示:

function dereference($ref) {
    $dref = array();

    foreach ($ref as $key => $value) {
        $dref[$key] = $value;
    }

    return $dref;
}

$result[] = dereference($row);

也有效,但看起来同样丑陋。

最佳答案

不确定我是否完全理解这个问题,但是你可以使用递归吗?

function array_copy($source) {
    $arr = array();

    foreach ($source as $element) {
        if (is_array($element)) {
            $arr[] = array_copy($element);
        } else {
            $arr[] = $element;
        }
    }

    return $arr;
}

$result = array();
$row = array(
    array('a', 'b', 'c'),
    array('d', 'e', 'f')
);

$result[] = array_copy($row);

$row[0][1] = 'x';

var_dump($result);
var_dump($row);

关于PHP 解引用数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360144/

相关文章:

php - 如何使用 str_getcsv() 并忽略引号之间的逗号?

java - 在java中没有for循环将数组拆分为两部分

c++ - 如何在 C++ 中创建类对象的 vector ?

python - 关于python列表引用

php - 找不到类 'mysqli_connect'

javascript - mySQL 没有将数组返回到 angularJS 中

php - 数据表: update table in realtime with animation

c - 如何使用C中的指针将十六进制转换为二进制

java - 确定数组中每行的最高和最低值

c++ - 延长临时物体的使用生命周期