php - function()[]语法

时间:2015-06-26 09:13:51

标签: php apache syntax wamp brackets

我在php中有一个奇怪的语法问题。

在我的代码中的某个时刻,我做了一个mysql查询(只发回一行一行的值),我得到了以下方式的查询结果:

$myvar = mysql_fetch_assoc($result)["something"];
当然,

$ result是mysql的结果。 它在本地和网站上都运行良好。 但是,当我的同事拿到最新版本的网站进行本地测试时,他得到了以下错误:

Parse Error: syntax error, unexpected '[' in C:\wamp\www\mySite\ref\myFile.php on line 33

第33行是我定义$ myvar的行。 他通过以下方式解决了这个问题:

$myvar = mysql_fetch_assoc($result);
$myvar = $manif["something"];

我觉得这个问题很明显来自于wamp(我个人正在运行一个apache服务器),所以我的问题是"为什么?"。

我最近才进入Web开发(到目前为止我更像是一名C ++开发人员)并且我已经使用了这种语法一段时间了。这是不好的做法吗?

为什么wamp会返回错误而不是apache?每个服务器都有自己的php解析器吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

PHP5.4中引入了函数数组解除引用(例如public static)。检查你的php版本。

答案 1 :(得分:0)

自PHP 5.4起,它可以做你想要的。如果你的同事使用旧版本的PHP,那就是它无法正常工作的原因。

如果您使用5.3之前的PHP,则应使用临时变量,例如像这样的东西:

import igraph as ig
G = ig.Graph()
G.add_vertices(9)
G.add_edges([(0,1), (1,2),(2,3),(3,0),(0,4),(4,5),(5,6),(6,7),(6,8)])

def cycle_basis_ig(G,root=None):
gnodes=set(n.index for n in G.vs())
cycles=[]
while gnodes:  # loop over connected components
    if root is None:
        root=gnodes.pop()
    stack=[root]
    pred={root:root} 
    used={root:set()}
    while stack:  # walk the spanning tree finding cycles
        z=stack.pop() # use last-in so cycles easier to find
        zused=used[z]
        for nbr in G.neighbors(z,mode='ALL'):
            if nbr not in used:   # new node 
                pred[nbr]=z
                stack.append(nbr)
                used[nbr]=set([z])
            elif nbr is z:        # self loops
                cycles.append([z]) 
            elif nbr not in zused:# found a cycle
                pn=used[nbr]
                cycle=[nbr,z]
                p=pred[z]
                while p not in pn:
                    cycle.append(p)
                    p=pred[p]
                cycle.append(p)
                cycles.append(cycle)
                used[nbr].add(z)
    gnodes-=set(pred)
    root=None
return cycles


cb = cycle_basis_ig(G)
print 'cycle_basis_ig: ', cb