动态生成的字符串索引存在问题

时间:2019-02-11 10:22:04

标签: php

我想为数组动态创建字符串索引a0,a1,a2...。我可以使用返回索引的公式来引用数组元素,但是当我使用字符串'a0','a1'等时则不能。

请参阅下面的代码和相应的输出

$aArray=array(1,2);
foreach ($aArray as  $iIndx => $id) {
      echo '\'a'.$iIndx.'\''.' ';
      $aConditions['\'a'.$iIndx.'\''] = $id;
      echo $aConditions['\'a'.$iIndx.'\''].'<BR>';        
}
echo $aConditions['a0'].' '.$aConditions['a1'];

运行这段代码将导致以下打印输出:

'a0'1   'a1'2

它显示索引看起来像a0和a1,并且显然可以引用这些索引(foreach循环中的第二个echo语句)。

但是,最后一个echo语句不会产生任何输出。完全没有输出。

错误日志会发出以下通知:

PHP注意:未定义索引a0 in .....(指最后一条回显行)

与a1相同的消息。

因此,看起来好像我建立了有效的索引,它们看起来像a0和a1,但显然是其他东西。我的问题是我想在不同的文本字符串中引用这些索引,然后需要一个完美的匹配。

1 个答案:

答案 0 :(得分:4)

问题是您的keys像这样'a0'会注意到数组中的单引号。

当您尝试访问它时,您使用['a0']意味着您正在访问a0键而不是'a0'

您不应在键中添加单引号。 如果仍要使用单引号,请按以下方式访问密钥:

$aConditions["'a0'"]

无论如何,我认为在密钥中使用单引号是一个坏主意。 尝试像这样定义您的键:

 $aConditions['a'.$iIndx] = $id;

然后您可以使用$aConditions['a0']

访问值