php - 更改二维数组每一行中的键而不丢失值

标签 php arrays multidimensional-array key

我有一个行数组,其中一个(视觉)数据列有两个相似但不同的键。我想替换其中一个键,以便该列在所有行中具有相同的键。

我的输入数组:

[
    ['Ttitle' => 'lilly', 'Price' => 1.75, 'Number' => 3],
    ['Title' => 'rose',   'Price' => 1.25, 'Number' => 15],
    ['Title' => 'daisy',  'Price' => 0.75, 'Number' => 25],
    ['Title' => 'nettle', 'Price' => 2.75, 'Number' => 33],
    ['Title' => 'orchid', 'Price' => 1.15, 'Number' => 7],
];

我想要的结果:(注意 lilly 的关键更改)

[
    ['Title' => 'lilly',  'Price' => 1.75, 'Number' => 3],
    ['Title' => 'rose',   'Price' => 1.25, 'Number' => 15],
    ['Title' => 'daisy',  'Price' => 0.75, 'Number' => 25],
    ['Title' => 'nettle', 'Price' => 2.75, 'Number' => 33],
    ['Title' => 'orchid', 'Price' => 1.15, 'Number' => 7],
];

当我尝试使用array_map()时,我设法将所有键更改为Title,但我也删除了所有Title值除了 Ttitle 键,我刚刚更改为 Title

代码如下:

if (!empty($notmatchingarray))
{
    $completearray = array_merge($notmatchingarray, $datastuff2);

    $completearray = array_map(
        function($complete) {
            return array(
                'Title' => $complete['Ttitle'],
                'Price' => $complete['Price'],
                'Number' => $complete['Number'],
            );
        },
        $completearray
    );
    print_r($completearray);
}

我在使用这个array_map()函数时做错了什么吗?我应该做点别的吗?

最佳答案

更好的方法,但我要走了。使用现有代码,您需要设置 TtitleTitle (以存在的为准):

$completearray = array_map(function($complete) {
        $title = isset($complete['Ttitle']) ? $complete['Ttitle'] : $complete['Title'];
        return array(
           'Title' => $title,
           'Price' => $complete['Price'],
           'Number' => $complete['Number'],
       );
}, $completearray);

Ternary operator是简单 if/else 的快捷方式,因此:

if(isset($complete['Ttitle'])) {
    $title = $complete['Ttitle']; //if Ttitle is set use it
} else {
    $title = $complete['Title'];  //if not use Title
}

关于php - 更改二维数组每一行中的键而不丢失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364276/

相关文章:

Python:高效迭代多维列表

typescript - 有没有一种更简洁的方法可以对嵌套数组中的所有元素调用类型转换函数?

php - Laravel 404 Not Found,但图片路径正确

php - 淡季时间段计算

PHP:模拟多个MySQL连接到同一个数据库

java - 两个数组之间的差异

php - 从过滤器中选择的 MYSQL 查询

javascript - 从 JavaScript 数组中删除 id 的更智能方法

c - 如何通过省略逗号来读取带逗号的字符串 %[^,] 不适合我

c - 指针声明/引用后的方括号