加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 创建两个数组,一个0索引,另一个ID索引,引用连接两个

发布时间:2020-12-13 22:26:28 所属栏目:PHP教程 来源:网络整理
导读:标题很难到达,但基本上我正在尝试做的是从我的数据库中检索一些数据,并将其中的部分插入到两个数组中: 第一个数组是一个常规有序数组,所以 $list = [ 0 = ['id' = 'a','value' = 2],1 = ['id' = 'b','value' = 4],// etc ]; 第二个数组将使用对象的唯一id作
标题很难到达,但基本上我正在尝试做的是从我的数据库中检索一些数据,并将其中的部分插入到两个数组中:

>第一个数组是一个常规有序数组,所以

$list = [
  0 => ['id' => 'a','value' => 2],1 => ['id' => 'b','value' => 4],// etc  
];

>第二个数组将使用对象的唯一id作为数组的键,所以

$map = [
  'a' => ['id' => 'a','b' => ['id' => 'b',// etc  
];

但是,我希望$list和$map的实际内容通过引用链接,所以如果我更改一个,另一个会更新.

// update `a`'s value
$map['a']['value'] = 10;

// will echo "TRUE"
echo ($list[0]['value'] === 10 ? 'TRUE' : 'FALSE');

但是,我正在使用的代码不起作用,我可以看到原因,但不知道如何解决它.

这是我脚本中发生的一些伪代码:

<?php

// Sample data
$query_result = [
    ['id' => 'a','other_data' => '...'],['id' => 'b',['id' => 'c',// etc
];

$list = [];
$map = [];

foreach ($query_result as $obj) {
    // Problem is here,$temp_obj gets reassigned,rather than a new variable being created
    $temp_obj = ['foreign_key' => $obj['id'],'some_other_data' => 'abc',];

    // Try to have object that is inserted be linked across the two arrays
    $list[] = &$temp_obj;
    $map[$obj['id']] = &$temp_obj;
}

// Both will just contain my 3 copies of the last item from the query,// in this case,`['id' => 'c',`
var_dump($list);
var_dump($map);

这是一个非常简化的版本,但基本上是相同的.

因此,当我循环遍历我的对象并将它们添加到两个数组$list和$map时,如何添加这些对象以使它们成为彼此的链接?

解决方法

只需删除&在你的代码中像这样:

$list[] = $temp_obj;  
$map[$obj['id']] = $temp_obj;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读