【问题标题】:What php configuration variable disallows concatenated array indexes?什么 php 配置变量不允许连接数组索引?
【发布时间】:2011-10-02 11:52:10
【问题描述】:

例如

if(!isset($am_states[$lot.'_-40C'])){

$am_states[$temp."_".$states[$i]['temperature']] = $states[$i]['temperature'];

每当我有连接字符串作为数组键的数组时,php 都会返回错误:

解析错误:语法错误,意外'.',期待']'

所以我假设服务器配置有问题,尽管我确定我在本地配置上进行了一些更改。 上次我更改配置是在我设置我的 apache/mysql/php 安装时

即 PHP 版本 5.3.1,Apache/2.2.14,MYSQL5.1.41(默认来自 xampp1.7.3)

所以我在 7 个月前使用了这种语法,它们工作正常。只是现在他们产生了错误。 有人可以帮忙吗?

【问题讨论】:

  • 我不认为这是你可以关闭的东西,这是 PHP 的核心语法和功能。你在哪个 PHP 版本上运行它,你能提供更多信息吗?
  • 我也不认为这是一个配置变量。为什么不为索引构建一个连接字符串并用字符串引用数组?
  • hmmm 我没有更新我的 php 版本,它之前工作过...... phpinfo 说它的 PHP 版本 5.3.1
  • 这些工作:$a = array("foo"=>1); $o = "o"; echo $a["fo$o"] . $a["fo" . $o]; /* 11 */ $a = array("0f00"=>1); $o = "0"; echo $a["$o"."f0$o"] . $a[$o."f0".$o]; /* 11 */ // this won't --> $a["$of0$o"]; It is guessing that $oF0 is a variable name. 所以,问题可能出在其他地方。
  • @Mike Caron:很容易尝试 ;-) 在 5.2.14 和 5.3.6 上,它会生成 syntax error, unexpected ']'。不是同一个错误。无论如何,想不出任何代码可以准确生成该错误消息。

标签: php php-ini


【解决方案1】:

您对您使用的 PHP 版本持肯定态度吗?以下测试(使用 PHP 5.3.6 (cli))没有问题。也许您可以发布一个更完整的示例?

#!/usr/bin/env php
<?php

$states = array(
    array('temperature' => 40),
    array('temperature' => 50),
    array('temperature' => 60)
);

$temp = 'test';
$i = 2;

$am_states[$temp . "_" . $states[$i]['temperature']] = $states[$i]['temperature'];

var_dump($am_states);

这个脚本的输出是:

array(1) {
  ["test_60"]=>
  int(60)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 2016-12-13
    • 2013-08-22
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多