php两个数组找公共部分,如何基于公共密钥在PHP中组合两个数组?

我正在尝试基于entry_id键将两个关联数组连接在一起.两个数组都来自单独的数据库资源,第一个存储条目标题,第二个存储条目作者,key =>值对如下:

array (

'entry_id' => 1,

'title' => 'Test Entry'

)

array (

'entry_id' => 1,

'author_id' => 2

我正在尝试实现如下的数组结构:

array (

'entry_id' => 1,

'author_id' => 2,

'title' => 'Test Entry'

)

目前,我通过循环遍历每个数组并按照我想要的方式格式化数组来解决问题,但我认为这有点像记忆.

$entriesArray = array();

foreach ($entryNames as $names) {

foreach ($entryAuthors as $authors) {

if ($names['entry_id'] === $authors['entry_id']) {

$entriesArray[] = array(

'id' => $names['entry_id'],

'title' => $names['title'],

'author_id' => $authors['author_id']

);

}

}

}

我想知道有一种更简单,内存更少的方法吗?

最佳答案 是否有可能在用于从数据库中检索信息的SQL中执行JOIN而不是在多个查询中获取数据?在数据库级别执行此操作会更快更简洁.

根据您的数据库结构,您可能希望使用类似的东西

SELECT entry_id, title, author_id

FROM exp_weblog_data

INNER JOIN exp_weblog_titles

ON exp_weblog_data.entry_id = exp_weblog_titles.entry_id

WHERE field_id_53 = "%s" AND WHERE entry_id IN ("%s")

否则,最佳选择可能是重构第一个数组,使其成为title_id到标题的映射

所以:

array(

array(

'entry_id' => 1,

'title' => 'Test Entry 1',

),

array(

'entry_id' => 3,

'title' => 'Test Entry 2',

),

)

会成为:

array(

1 => 'Test Entry 1',

3 => 'Test Entry 2',

)

这意味着合并数组所需的代码简化为:

$entriesArray = array();

foreach ($entryAuthors as $authors) {

$entriesArray[] = array(

'id' => $authors['entry_id'],

'title' => $entryNames[$authors['entry_id']],

'author_id' => $authors['author_id']

);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值