我想为数组动态创建字符串索引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,但显然是其他东西。我的问题是我想在不同的文本字符串中引用这些索引,然后需要一个完美的匹配。
答案 0 :(得分:4)
问题是您的keys
像这样'a0'
会注意到数组中的单引号。
当您尝试访问它时,您使用['a0']
意味着您正在访问a0
键而不是'a0'
。
您不应在键中添加单引号。 如果仍要使用单引号,请按以下方式访问密钥:
$aConditions["'a0'"]
无论如何,我认为在密钥中使用单引号是一个坏主意。 尝试像这样定义您的键:
$aConditions['a'.$iIndx] = $id;
然后您可以使用$aConditions['a0']