【问题标题】:PHP Associative Array use variable as a keyPHP关联数组使用变量作为键
【发布时间】:2021-07-24 23:02:28
【问题描述】:

我想“映射”从 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

2021 年 8 月 27 日编辑 它适用于生产。暂时就这样吧……我们认为问题出在excel编码之类的……

2021 年 9 月 14 日编辑 这是特殊字符的问题。它适用于生产,但仍然使用了一些正则表达式来删除它们。

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

回声 $arrType[$type]; //期望值

【问题讨论】:

  • 你得到什么错误?
  • 未定义索引:TYPE ONE
  • 这显然意味着$row['type'] 的值不是你所期望的。 var_dump($row['type'])
  • 已经尝试转换为字符串
  • 您的值是否包含引号?你能试试$key = trim($row['type'], '"');吗?

标签: php


【解决方案1】:

需要考虑的事情

    $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

【讨论】:

  • 感谢您的建议,但已经尝试过修剪和投射。
【解决方案2】:

这是特殊字符的问题。它适用于生产,但仍然使用了一些正则表达式来删除它们。

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

echo $arrType[$type]; //Expected value

【讨论】:

    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 2012-05-08
    • 2011-12-30
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多