相关疑难解决方法(0)

PHP解析/语法错误; 以及如何解决它们?

每个人都遇到语法错误.即使是有经验的程序员也会犯错误.对于新手来说,这只是学习过程的一部分.但是,通常很容易解释错误消息,例如:

PHP Parse错误:语法错误,第20行的index.php中出现意外的'{'

意想不到的符号并不总是真正的罪魁祸首.但是行号给出了从哪里开始寻找的粗略想法.

始终查看代码上下文.语法错误往往隐藏在提及前面的代码行.将您的代码与手册中的语法示例进行比较.

虽然不是每个案例都匹配另一个案例 然而,有一些常规步骤可以解决语法错误.这篇文章总结了常见的陷阱:

php debugging parsing syntax-error

614
推荐指数
13
解决办法
48万
查看次数

PHP:即时访问数组值

在php中,我经常需要使用数组来映射变量......但我似乎无法在一个内联中执行此操作.cf示例:

// the following results in an error:
echo array('a','b','c')[$key];

// this works, using an unnecessary variable:
$variable = array('a','b','c');
echo $variable[$key];
Run Code Online (Sandbox Code Playgroud)

这是一个小问题,但它每隔一段时间就会不停地窃听......我不喜欢这样一个事实:我没有使用变量;)

php arrays coding-style

48
推荐指数
4
解决办法
2万
查看次数

调用PHP爆炸并访问第一个元素?

可能重复:
用于解除引用功能结果的PHP语法

我有一个字符串,看起来像1234#5678.现在我称之为:

$last = explode("#", "1234#5678")[1]
Run Code Online (Sandbox Code Playgroud)

它不起作用,有一些语法错误......但在哪里?我期待的是5678 in $last.这不适用于PHP吗?

php string explode

25
推荐指数
4
解决办法
4万
查看次数

解析错误:语法错误,意外'['与php 5.3

我的脚本在我的xampp上运行得非常好.现在我尝试将其上传到服务器上,但它直接吐了一个

解析错误:语法错误,意外'['

在我的脸上.:(

它嘲弄的线是这一行:

    $item = $xml->xpath($path)[0];
Run Code Online (Sandbox Code Playgroud)

我不知道出了什么问题.我试着看看php 5.3更新日志,但没有找到任何关于它.(因为我在服务器上有5.3,而在xampp上有一个较旧的版本)

整个代码块看起来像这样:

$path = '//item[@id="'.$id.'"]';
if ($xml->xpath($path)) {
    $item = $xml->xpath($path)[0];
} else {
    die('<p class="error">Script Error: Code 101 - Please contact administrator</p>');
}
Run Code Online (Sandbox Code Playgroud)

我感谢任何帮助,我无法与谷歌联系并且不知道它可能来自哪里,因为在xampp它的工作正常

php parse-error php-5.3

19
推荐指数
1
解决办法
6万
查看次数

使用数字键作为对象转换数组

我在探讨PHP的构建机制,并在将数组作为对象进行投射时遇到了一个奇怪的情况

$o = (object) array('1'=>'/foo/bar');   
$o = new stdClass();
var_dump($o);
Run Code Online (Sandbox Code Playgroud)

据我了解,PHP属性需要使用与PHP变量相同的规则声明.这是一个有效的变量名称,以字母或下划线开头,后跟任意数量的字母,数字或下划线.但是,上面的代码产生以下输出

object(stdClass)#1 (1) {
  [1]=>
  string(8) "/foo/bar"
}
Run Code Online (Sandbox Code Playgroud)

当你试图访问对象中的信息时,它变得非常奇怪.

var_dump($o->1);        // parse error
var_dump($o->{'1'});        // NULL 
var_dump(get_object_vars($o));  //array(0) { }
Run Code Online (Sandbox Code Playgroud)

无论如何都要获取var_dump报告的信息在对象中,或者它是否仅在请求生命周期的其余部分被锁定?(实际使用这是零,我只是好奇)

php arrays casting

12
推荐指数
2
解决办法
4994
查看次数

解析错误:语法错误,意外'[',期待')'

我有这个行代码

$media = $dc->thumbnail->attributes()['url'];
Run Code Online (Sandbox Code Playgroud)

在我的本地(WAMP)php 5.4.3上运行正常但是当我在我的服务器cpanel上托管它然后它给出了这个错误

Parse error: syntax error, unexpected '[', expecting ')'
Run Code Online (Sandbox Code Playgroud)

我服务器上的php版本是5.2.17

我看到它有任何问题,请帮忙

php syntax-error php-5.2

10
推荐指数
1
解决办法
4万
查看次数

从CodeIgniter中的post数组中获取数据

好的,所以我有一个表单,它在POST数组中发送数组.我试着这样读:

$day = $this->input->post("days")[0];
Run Code Online (Sandbox Code Playgroud)

这不起作用.PHP说"意外"['".为什么这不起作用?

我通过这样做来修复它:

$days = $this->input->post("days");
$day = $days[0];
Run Code Online (Sandbox Code Playgroud)

我解决了我的问题,我只是好奇为什么第一种方法不起作用.

php codeigniter

9
推荐指数
3
解决办法
4万
查看次数

从php中的函数调用中访问数组元素

可能重复:
当使用从函数返回的数组时,如何避免PHP中的临时变量

function array_test()  
{ 
    return array(0, 1, 2); 
}  

echo array_test()[0];
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么这段代码不起作用?

php

8
推荐指数
0
解决办法
507
查看次数

php foreach,为什么使用数组引用传递速度快?

下面是对一个大数组的php foreach循环的测试,我认为如果$v不改变,真正的副本不会因为写入时副本而发生,但为什么它通过引用传递时速度快?

代码1:

function test1($a){
  $c = 0;
  foreach($a as $v){ if($v=='xxxxx') ++$c; }
}

function test2(&$a){
  $c = 0;
  foreach($a as $v){ if($v=='xxxxx') ++$c; }
}

$x = array_fill(0, 100000, 'xxxxx');

$begin = microtime(true);
test1($x);
$end1 = microtime(true);
test2($x);
$end2 = microtime(true);

echo $end1 - $begin . "\n";   //0.03320002555847
echo $end2 - $end1;           //0.02147388458252
Run Code Online (Sandbox Code Playgroud)

但这一次,使用pass by reference很慢.

代码2:

function test1($a){
  $cnt = count($a); $c = 0;
  for($i=0; $i<$cnt; ++$i)
    if($a[$i]=='xxxxx') ++$c;
}
function …
Run Code Online (Sandbox Code Playgroud)

php arrays foreach

8
推荐指数
1
解决办法
3972
查看次数

访问函数返回的数组

反正有没有临时变量直接访问数组中返回的数据?

目前,我的代码如下:

function getData($id) {
    // mysql query
    return mysql_fetch_array($result);
}

$data = getData($id);
echo $data['name'];
Run Code Online (Sandbox Code Playgroud)

是否有直接的方法来获取没有临时变量的返回数据?

php arrays variables return function

6
推荐指数
2
解决办法
1万
查看次数