PHP关联数组使用变量作为键

  • 本文关键字:变量 关联 数组 PHP php
  • 更新时间 :
  • 英文 :


我想要"从excel文件中获取的值

如果$row['type']包含'TYPE ONE我希望得到'value-one"。但是,我得到了一个错误。

我不知道这是不是PHP中关联数组的工作方式

$arrType = [
'TYPE ONE' => 'value-one',
'TYPE TWO' => 'value-two',
];
$key = $row['type'];
echo $arrType[$key]; //Error Undefined index: TYPE ONE

如果我手动分配字符串值…它工作…

$arrType = [
'TYPE ONE' => 'value-one',
'TYPE TWO' => 'value-two',
];
$key = 'TYPE ONE';
echo $arrType[$key]; //value-one

EDIT 2021年8月27日它适用于生产。暂时,我们就这样吧……我们认为问题是excel编码或其他什么…

EDIT 14 Sep 2021这是一个特殊字符的问题。它在生产环境中工作,但仍然使用一些正则表达式来删除它们。

$ type = preg_replace ('/^ a-zA-Z ]/', '', 函数内爆(arrType美元[$ key])));

echo $ arrType[$类型];//期望值

考虑事项

$row = [
'TYPE'=>'TYPE TWO',
'type'=>'TYPE ONE ' //possible spaces -- use trim()
];
$arrType = [
'TYPE ONE' => 'value-one',
'TYPE TWO' => 'value-two',
];
$key = $row['type'];
echo $arrType[$key]; //Notice: Undefined index: TYPE ONE
$key = trim($row['type']);
echo $arrType[$key]; //value-one

这是一个特殊字符的问题。它在生产环境中工作,但仍然使用一些正则表达式来删除它们。

$type = preg_replace('/[^a-zA-Z ]/', '', implode(str_split($arrType[$key])));
echo $arrType[$type]; //Expected value

最新更新