【问题标题】:Declaring a variable as a string and later using it as an array?将变量声明为字符串,然后将其用作数组?
【发布时间】:2021-01-16 14:59:26
【问题描述】:

在 PHP 中是否发生了一些变化,将变量声明为字符串,然后将其用作数组是不行的。我们升级到 bitnamies wamp 堆栈,它破坏了我们的应用程序。变量之一

$change="";

后来用过

$change[$k] = "this";

它仍然是一个字符串,而不是变成一个数组。这是我可以更改的 php.ini 配置吗?

【问题讨论】:

  • 没有这样的配置。要么将变量声明为数组,要么不执行此类类型转换。
  • 是的,有一些变化。从 7.1 开始,现在会变成 string(1) "t"Assignment via string index access on an empty string
  • 您可以将旧版本的行为与 3v4l.org/84hl3 进行比较,是的,它们确实改变了 PHP 7 中的行为
  • 这是有道理的,因为这是我的结果,我想我只需要戳其他变量并修复它们

标签: php php-7.4


【解决方案1】:

从 7.1 开始,您描述的行为发生了变化。查看Assignment via string index access on an empty string的更改日志

在空字符串上按字符修改字符串现在可以像 for 非空字符串,即写入超出范围的偏移会填充 带空格的字符串,其中非整数类型转换为整数, 并且仅使用分配字符串的第一个字符。以前, 空字符串被默默地视为空数组。

<?php
$change='';
$change[2] = "this";
var_dump($change); 

/*
Prior to 7.1: 
  array(1) {
    [2]=>
    string(4) "this"
  }

7.1 and up:
  string(3) "  t"

PHP 7 已经看到许多改进,这些改进使得“更严格”的输入成为可能,并允许更好的type hinting。尽管如此,PHP 仍然被认为是一种松散类型的语言。从 7.0 开始,一些示例包括 Scalar type declarationsReturn type declarationsstrict_types 指令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多