【问题标题】:How do I replace assocative array keys with other words from second array?如何用第二个数组中的其他单词替换关联数组键?
【发布时间】:2018-06-22 08:04:16
【问题描述】:

我正在尝试用一个单词替换数组键(= 单个字母)。我有一个关联数组和一个带有替换词的 $mapKeyArray

$inputArray = ['P' => 72,'T' => 0,'U' => 1,'E' => 0];

function cb_replaceWords($a) {
    $mapKeyArray = array('P' => 'Pink', 'T' => 'Top', 'U' => 'Union', 'E' => 'EX');
    foreach($a as $key) {
//        $a[$key] = $mapKeyArray[$key];
        $a[$key];
    }
    return $a;
}

$outputArray = array_map("cb_replaceWords", $inputArray);

【问题讨论】:

标签: php arrays


【解决方案1】:

修改你的函数为:

function cb_replaceWords($a) {
    $result = [];
    $mapKeyArray = array('P' => 'Pink', 'T' => 'Top', 'U' => 'Union', 'E' => 'EX');
    foreach($a as $key => $value) {
        $result[$mapKeyArray[$key]] = $value;
    }
    return $result;    
}

// and there's no need to use array_map
$outputArray = cb_replaceWords($inputArray);

如果您的数组具有 same 键顺序,您可以将所有这些替换为 array_combine:

$outputArray = array_combine($mapKeyArray, $inputArray);

【讨论】:

  • 我意识到我需要你的第一个解决方案。你能解释一下为什么 foreach 会选择正确的第一个字母吗?我没有看到 == 并且 $value 是 inputArr 中的 $value 而不是 mapKeyArray??
  • 如果$keyP,则$mapKeyArray[$key]$mapKeyArray['P'],即Pink$result[$mapKeyArray[$key]],即$result['Pink'] 设置为值$value
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多