【问题标题】:Get Data from Array by Variable通过变量从数组中获取数据
【发布时间】:2013-01-07 22:17:18
【问题描述】:

我有这个数组:

$array = array();
 $array['123'] = 'abc';
 $array['456'] = 'def';

现在我想根据一个变量从该数组中获取数据。这是我尝试过的:

$variable = '123';    
$result = $array[$variable];
echo $result;

这似乎是错误的,但我不知道为什么。它会导致警告:

Illegal offset type […]

【问题讨论】:

  • 我无法复制您的错误。你确定你没有其他事情发生吗?
  • 非法偏移类型通常发生在你尝试使用对象或数组作为访问数组的键时,你确定这是你使用的代码吗?
  • 是与否:$variable 是从另一个数组变量创建的 ($variable = $post['id'];)
  • 这会为我输出“abc”,没有任何警告。
  • 试试var_dump($post['id']) - 或者你的意思是$_POST['id']

标签: php arrays variables offset


【解决方案1】:

我将那个确切的代码运行到我的编译器中并且它工作了;可能是空格错误(您看不到但仍会导致错误的随机字符)。我会尝试重新输入那段代码并删除旧的。

【讨论】:

  • $variable 是从另一个数组变量创建的 ($variable = $post['id'];) - 这会导致问题吗?
  • 在你回显的地方添加一行 $post['id'];看看它说了什么。如果 $post['id'] 等于 123 或类似值,你应该没有问题。
  • 我同意迈克尔的观点。我建议在对您的问题的评论中尝试相同的方法。
  • 解决方案:必须将变量转换为整数:$variable = (int)$variable; - 感谢您的建议!
  • 正如我在回答中所说,将其作为字符串执行可能更安全,因为如果您的帖子 ID 像 1.1 那样奇怪,将其转换为 int 会导致它丢失重要信息。此外,您应该将某人的答案标记为正确,以便其他人知道它已解决并且不必费心阅读它。很高兴你成功了。
【解决方案2】:

我建议尝试这样做以确保将变量转换为字符串:

$result = $array[(string)$variable];

这很可能是您的问题。我认为也许 $post['id'] 要么错误地是一个多维数组,要么以某种方式成为不被接受为数组键的类型的对象。

【讨论】:

    猜你喜欢
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多