首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用一个数组作为多维数组子数组的键的PHP

使用一个数组作为多维数组子数组的键的PHP
EN

Stack Overflow用户
提问于 2017-06-02 20:24:01
回答 2查看 511关注 0票数 1

所以我得到了一个一维数组,就像:

代码语言:javascript
复制
Array
(
[0] => md5
[1] => name
[2] => description
[3] => url
)

和一个多维数组:

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [0] => md5#1
            [1] => name1
            [2] => desc1
            [3] => url1
         )  
    [1] => Array
        (
            [0] => md5#2
            [1] => name2
            [2] => desc2
            [3] => url2
         )  
)

我希望使用第一个数组的值作为多维数组的子数组的键,因此输出应该如下所示:

代码语言:javascript
复制
Array
    (
        [0] => Array
            (
                [md5] => md5#1
                [name] => name1
                [desription] => desc1
                [url] => url1
             )  
        [1] => Array
            (
                [md5] => md5#2
                [name] => name2
                [description] => desc2
                [url] => url2
             )  
    )

或者(作为一个有点离题的问题),如果多维数组的元素键不是md5,而是md5,那么如何根据它们的值对多维数组的元素进行排序?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-02 20:30:58

要组合两个数组的值,其中一个是键,另一个是值,请使用array_combine函数:

代码语言:javascript
复制
$keysArray  = [];
$multiArray = [];
$result_array = [];
foreach ($multiArray as $value) {
    $result_array[] = array_combine($keysArray, $value);
}

对于排序--使用usort并定义您的自定义函数:

代码语言:javascript
复制
usort($result_array, function($a, $b) { return strcmp($a['md5'], $b['md5']); });
票数 2
EN

Stack Overflow用户

发布于 2022-06-13 00:40:04

下面是@u_mulder的回答的功能类型。

这种技术只是将键名数组作为数组中每一行的键。

使用箭头函数语法(自PHP7.4以来可用),允许自定义回调访问全局范围的$keys数组,而无需在函数声明中显式地写入use($keys)

代码:(演示)

代码语言:javascript
复制
$first = ['md5#1', 'name1', 'description1', 'url1'];
$second = ['md5#2', 'name2', 'description2', 'url2'];
$multidimArray = [$first, $second];

$keys = ['md5', 'name', 'description', 'url'];

var_export(
    array_map(
        fn($row) => array_combine($keys, $row),
        $multidimArray
    )
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44336910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档