我在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解析器吗?
谢谢。
答案 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