gpt4 book ai didi

php - 将数组键更改为数组中的值

转载 作者:行者123 更新时间:2023-12-02 06:27:20 25 4
gpt4 key购买 nike

编辑:

尽量避免在您看到的 $data 数组之外进行循环。因为我需要这样做几次而且看起来很乱。


我有一个类似这样的数组:

$links = [
[
'type_id' => '1',
'url' => ''
],
[
'type_id' => '2',
'url' => ''
]
];
$types = [
[
'id' => 1,
'value' => 'facebook'
],
[
'id' => 2
'value' => 'twitter'
]
];
$data = [
'primary' => [
'address_details' => [],
'contact_details' => [],
'social_links' => $links
]
];

我需要 $data['primary']['social_links'] 中的键来使用 $type['value'] 而不仅仅是 0 , 1, 等等...

所以 $data 看起来像:

$data = [
'primary' => [
'address_details' => [],
'contact_details' => [],
'social_links' => [
'facebook' => [
'type_id' => '1',
'url' => ''
],
'twitter' => [
'type_id' => '2',
'url' => ''
]
]
]
];

有什么办法可以用 array_map 或其他东西来做到这一点吗?

最佳答案

你可以只使用array_combine$typesvalue 列的输出(使用 array_column 生成)作为键和 $links 的值:

$data = [
'primary' => [
'address_details' => [],
'contact_details' => [],
'social_links' => array_combine(array_column($types, 'value'), $links)
]
];
print_r($data);

输出:

Array ( 
[primary] => Array (
[address_details] => Array ( )
[contact_details] => Array ( )
[social_links] => Array (
[facebook] => Array (
[type_id] => 1
[url] =>
)
[twitter] => Array (
[type_id] => 2
[url] =>
)
)
)
)

Demo on 3v4l.org

更新

根据对 OP 问题的编辑,提供单行解决方案会变得更加复杂。这应该有效:

$data = [
'primary' => [
'address_details' => [],
'contact_details' => [],
'social_links' => array_map(function ($v) use ($links) { return $links[array_search($v, array_column($links, 'type_id'))]; }, array_column($types, 'id', 'value'))
]
];

Demo on 3v4l.org

关于php - 将数组键更改为数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54690238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com