数组键值的php问题
我是php新手,这段代码有问题 我不明白,为什么“回声”打印:x?错误3000 3000是一把钥匙,确实应该是打印“扫描仪错误” 我的代码出了什么问题?谢谢大家数组键值的php问题,php,arrays,associative,Php,Arrays,Associative,我是php新手,这段代码有问题 我不明白,为什么“回声”打印:x?错误3000 3000是一把钥匙,确实应该是打印“扫描仪错误” 我的代码出了什么问题?谢谢大家 <?php // ....................................... sym class Error { const lexer = 1000 ; const parser = 2000 ; const scanner = 3000 ; } final cla
<?php
// ....................................... sym
class Error
{
const lexer = 1000 ;
const parser = 2000 ;
const scanner = 3000 ;
}
final class err extends Error
{
public $stringerr = array (
lexer => "Lexer error" ,
parser => "Parser error" ,
scanner => "Scanner error"
) ;
public function error ( $x )
{
echo "\nx" . " ? " . $stringerr[ $x ] . " error ";
return $x ;
}
}
?>
echo err::error( err::scanner ) ;
如果我理解正确的话
err::scanner
=3000
$stringerr[$x]
==$stringerr[3000]
您需要执行err::error('scanner')代码>
或:
如果我理解正确的话,$stringerr[$x]
应该是$this->stringerr[$x]
err::scanner
=3000
$stringerr[$x]
==$stringerr[3000]
您需要执行err::error('scanner')代码>
或:
而且,$stringerr[$x]
应该是$this->stringerr[$x]
echo用于在屏幕上打印+在返回未收到任何更改的$x的函数中
尝试:
而不是:
echo "\nx" . " ? " . $stringerr[ $x ] . " error ";
return $x;
echo用于在屏幕+上打印返回未收到任何更改的$x的函数
尝试:
而不是:
echo "\nx" . " ? " . $stringerr[ $x ] . " error ";
return $x;
您的错误是在调用静态函数时使用了非静态属性。您可以看到关于它的php通知:
PHP注意:未定义变量:中的stringerr
第19行的file.php
方法1
您应该将属性定义为静态并通过类名应用于它:
<?php
class Error
{
const lexer = 1000 ;
const parser = 2000 ;
const scanner = 3000 ;
}
final class err extends Error
{
public static $stringerr = array (
Error::lexer => "Lexer error" ,
Error::parser => "Parser error" ,
Error::scanner => "Scanner error"
) ;
public static function error ( $x )
{
echo "\nx" . " ? " . err::$stringerr[ $x ] . " error ";
return $x ;
}
}
echo err::error( err::scanner ) ;
?>
请注意,我故意将错误函数定义为静态的
方法2
或者定义此类的实例并使用$this
:
<?php
class Error
{
const lexer = 1000 ;
const parser = 2000 ;
const scanner = 3000 ;
}
final class err extends Error
{
public $stringerr = array (
Error::lexer => "Lexer error" ,
Error::parser => "Parser error" ,
Error::scanner => "Scanner error"
) ;
public function error ( $x )
{
echo "\nx" . " ? " . $this->stringerr[ $x ] . " error ";
return $x ;
}
}
$var = new err();
echo $var->error( Error::scanner ) ;
?>
您的错误是调用静态函数时使用了非静态属性。您可以看到关于它的php通知:
PHP注意:未定义变量:中的stringerr
第19行的file.php
方法1
您应该将属性定义为静态并通过类名应用于它:
<?php
class Error
{
const lexer = 1000 ;
const parser = 2000 ;
const scanner = 3000 ;
}
final class err extends Error
{
public static $stringerr = array (
Error::lexer => "Lexer error" ,
Error::parser => "Parser error" ,
Error::scanner => "Scanner error"
) ;
public static function error ( $x )
{
echo "\nx" . " ? " . err::$stringerr[ $x ] . " error ";
return $x ;
}
}
echo err::error( err::scanner ) ;
?>
请注意,我故意将错误函数定义为静态的
方法2
或者定义此类的实例并使用$this
:
<?php
class Error
{
const lexer = 1000 ;
const parser = 2000 ;
const scanner = 3000 ;
}
final class err extends Error
{
public $stringerr = array (
Error::lexer => "Lexer error" ,
Error::parser => "Parser error" ,
Error::scanner => "Scanner error"
) ;
public function error ( $x )
{
echo "\nx" . " ? " . $this->stringerr[ $x ] . " error ";
return $x ;
}
}
$var = new err();
echo $var->error( Error::scanner ) ;
?>
只需将echo$x放在这一行之前-echo“\nx”。“…您将了解问题所在。只需将echo$x放在这一行之前-echo”\nx“。”。。。。你会明白什么是错的。我相信这是一个很好的提示开始,我可以编辑它后,我知道它显示什么。我相信这是一个很好的提示开始,我可以编辑它后,我知道它显示什么。
<?php
class Error
{
const lexer = 1000 ;
const parser = 2000 ;
const scanner = 3000 ;
}
final class err extends Error
{
public $stringerr = array (
Error::lexer => "Lexer error" ,
Error::parser => "Parser error" ,
Error::scanner => "Scanner error"
) ;
public function error ( $x )
{
echo "\nx" . " ? " . $this->stringerr[ $x ] . " error ";
return $x ;
}
}
$var = new err();
echo $var->error( Error::scanner ) ;
?>