Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的echo是否也可以像var_dump一样工作?_Php - Fatal编程技术网

php中的echo是否也可以像var_dump一样工作?

php中的echo是否也可以像var_dump一样工作?,php,Php,我讲的不是php编程,而是php本身。 php的创建者是否可能让echo转储例如数组 var_dump确实做了什么?对现有功能进行如此彻底的更改将导致大量代码崩溃。所以我会说不 这就是说,这就是我们正在谈论的PHP,所以我不会感到惊讶……对现有功能进行如此彻底的更改将导致大量代码崩溃。所以我会说不 也就是说,这就是我们正在谈论的PHP,所以我不会感到惊讶 php的创建者是否可能像var_dump那样将echo转储到例如数组中 我想您的意思是,如果echo传递了一个不能显示为字符串的变量,则显示一

我讲的不是php编程,而是php本身。 php的创建者是否可能让echo转储例如数组
var_dump确实做了什么?

对现有功能进行如此彻底的更改将导致大量代码崩溃。所以我会说不


这就是说,这就是我们正在谈论的PHP,所以我不会感到惊讶……

对现有功能进行如此彻底的更改将导致大量代码崩溃。所以我会说不

也就是说,这就是我们正在谈论的PHP,所以我不会感到惊讶

php的创建者是否可能像var_dump那样将echo转储到例如数组中

我想您的意思是,如果
echo
传递了一个不能显示为字符串的变量,则显示一个转储,而不是当前显示其数据类型的行为(例如
Array

这确实有道理,但也很危险:如果一个对象包含最终用户不应该看到的数据怎么办

我怀疑
echo
函数(或者更确切地说,PHP的字符串解析函数)是否会因为这个原因而发生如此彻底的变化

php的创建者是否可能像var_dump那样将echo转储到例如数组中

我想您的意思是,如果
echo
传递了一个不能显示为字符串的变量,则显示一个转储,而不是当前显示其数据类型的行为(例如
Array

这确实有道理,但也很危险:如果一个对象包含最终用户不应该看到的数据怎么办


我怀疑
echo
函数(或者更确切地说,PHP的字符串解析函数)是否会因为这个原因而发生如此彻底的变化

在php中,您可以创建一个像数组一样行走、像数组一样嘎嘎作响的对象,但它仍然是一个具有可自定义的\uuu-toString方法的对象

class ary implements ArrayAccess
{
 function __construct() {
  $this->a = func_get_args();
 }
 function offsetExists($k) {
  return isset($this->a[$k]);
 }
 function offsetGet($k) {
  return $this->a[$k];
 }
 function offsetSet($k, $v) {
  $this->a[$k] = $v;
 }
 function offsetUnset($k) {
  unset($this->a[$k]);
 }
 function __toString() {
  return implode(', ', $this->a);
 }
}

$a = new ary(11, 22, 33);
$a[1] = 66;
echo $a;

当然,最好是数组已经是其他语言中的普通对象,但我认为这不会在最近的将来发生。

在php中,您可以创建一个像数组一样行走、像数组一样嘎嘎作响的对象,但它仍然是一个具有可自定义的u-toString方法的对象

class ary implements ArrayAccess
{
 function __construct() {
  $this->a = func_get_args();
 }
 function offsetExists($k) {
  return isset($this->a[$k]);
 }
 function offsetGet($k) {
  return $this->a[$k];
 }
 function offsetSet($k, $v) {
  $this->a[$k] = $v;
 }
 function offsetUnset($k) {
  unset($this->a[$k]);
 }
 function __toString() {
  return implode(', ', $this->a);
 }
}

$a = new ary(11, 22, 33);
$a[1] = 66;
echo $a;

当然,最好是数组已经是其他语言中的普通对象,但我认为这不会在最近的将来发生。

如果已经有了合适的函数,为什么要这样做呢,也就是说,
var_dump
?为什么var_dump和print_r都存在就是为了做到这一点?将echo更改为与var_dump()相同会破坏许多现有的PHP代码,只留下print(printf等)对于显示变量值而不是变量信息,原因是更容易编码。如果已经有一个合适的函数,即
var\u dump
,为什么要显示变量值呢?当var\u dump和print\r都存在时,为什么要这样做?将echo更改为与var\u dump()相同会破坏许多现有的PHP代码,只留下print(printf等)对于显示变量值而不是变量信息,原因是更容易编码。什么?PHP倾向于延迟很多向后兼容性。即使这是一场灾难,
register\u globals
仍然可用。如果您想要大量向后兼容性中断,请参阅python。什么?PHP倾向于延迟很多向后兼容性可扩展性。即使这是一场灾难,
register\u globals
仍然可用。如果您想要大量的向后兼容性中断,请参阅python。@我说的是向后兼容性。将输出从
array
更改为完全变量转储将是一个根本性的改变。是的。如果无法显示varaible,则转储。向后的兼容性将是我没有想到的问题。@我说的是向后兼容性。将输出从
array
更改为完全变量转储将是一个根本性的改变。是的。如果变量无法显示,则转储。向后兼容性将是我没有想到的问题。