在PHP中用一个数组的值替换另一个数组的键

6

我希望将表单字段映射到数据库字段。

我有两个数组...

一个数组是数据,包含表单字段ID作为键和表单字段值作为值。

$data = array("inputEmail"=>"someone@somewhere.com","inputName"=>"someone"... etc

我还有一个数组,我打算将其用作映射。该数组的键与表单字段相同,值为数据库字段名称。

$map = array("inputEmail"=>"email", "inputName"=>"name"... etc

我想要做的是遍历数据数组,当数据键值与映射键值匹配时,将新的键值分配给数据数组,该键值为映射数组的值。

$newArray = array("email"=>"someone@somewhere.com", "name"=>"someone"...etc

我的问题是怎么做?我尝试了很多不同的方法,现在已经完全迷失在其中。

为什么不在整个应用程序中使用相同的名称呢?;) - hek2mgl
输入字段名称对于表单验证的工作非常重要。但是我明白你的意思。我认为这比更改整个应用程序的输入字段名称和验证脚本更简单。 - Aparistar
如果我能给一个建议:尽可能在应用程序中使用相同的名称。这将使您免受许多头疼之苦。此外,这对于自动代码生成也非常有好处... - hek2mgl
2个回答

12

使用foreach循环可以使这个过程变得非常简单

foreach( $data as $origKey => $value ){
  // New key that we will insert into $newArray with
  $newKey = $map[$origKey];
  $newArray[$newKey] = $value;
}

更简洁的方法(消除用于澄清的变量)

foreach( $data as $origKey => $value ){
  $newArray[$map[$origKey]] = $value;
}

10

如果你想用另一个数组中的值替换一个数组的键,解决方法是使用array_combine

<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);

print_r($c);
?>

print_r 输出

Array
(
    [green]  => avocado
    [red]    => apple
    [yellow] => banana
)

1
在这种情况下,array_combine并不能满足用户的需求。 - Sam Lanning
@SamLanning 根据标题“在php中用另一个数组的值替换一个数组的键”,上面的答案是正确的,最好不要给它负面评价。因为它可以帮助那些想要用另一个数组的值替换一个数组的键的人们。 - Imran Zahoor
array_combine() 函数要求两个数组长度相等。我们不能假设这里的情况是如此。 - 99linesofcode
这是一个很棒的解决方案。最简单的。应该被接受。谢谢。 - Mirgen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接