我有一个行数组,其中一个(视觉)数据列有两个相似但不同的键。我想替换其中一个键,以便该列在所有行中具有相同的键。
我的输入数组:
[
['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()
函数时做错了什么吗?我应该做点别的吗?
最佳答案
更好的方法,但我要走了。使用现有代码,您需要设置 Ttitle
或 Title
(以存在的为准):
$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/