公司还是不推荐用python,只好屈服使用php,不过用python习惯了,真是发现有些地方不适应,今天写了一段代码,语法检查怎么都通不过,特地放在这里,希望有朋友能指点一下。

代码如下:

执行会报如下错误:

一开始我还以为又是少写’;’之类的问题,仔细检查未果,所以把代码拆成两行,变成:

居然执行成功了!

于是我不解了,为什么连c++都支持的语法,而php里面却不肯支持?

c++的代码如下:

更不用说python:

代码都可以正确执行。

在公司问了校友那边的同事,也是没有人知道为什么php不给与支持。

其实按照我的理解,语法上支持连缀应该是一种简约化的趋势,包括python的django,jquery,其实都在使用连缀。
有的朋友可能说,这样出错了不好定位,如果是在C中,我承认的确如此,因为需要通过错误返回码来进行错误定位;但是像python这种高级语言有着“异常”强大的支持,异常捕获完全可以替你完成这件事情。

OK,就是这样~其实并不是说php不好,php这样设计必然也有他的原因,我只是想弄清楚原因是什么。

一个典型支付系统的设计与实现

由于公司业务需要,花两周时间实现了一个小型的支付系统,麻雀虽小五脏俱全,各种必须的模块如账户加锁,事务性保证,流水对帐等都是有完整实现的,整个开发...

阅读全文

在php中使用类似django的form类

用php有两个月了,说实话用惯了django,再用php开发真的有点郁闷,简单列一下,并非批评,仅为入门的同学少走弯路: 取不到post的数据 当url为如下...

阅读全文

无所不能的vim-vim到底能做什么

其实很早就想写这篇文章了,虽然晚上介绍vim的文章很多,本博也已经就vim的使用写了70多篇博文,但是由于历史的原因,还有很多人对vim能做什么存在误解,包括...

阅读全文

36则回应给“php无法用下标操作函数返回的数组”

  1. leeon说道:

    php的一些编码规则还是比较蛋疼的,改造成这样也省了一次变量转换:
    function get($i)
    {
    $arr = array(
    1,2,3
    );
    return $arr[$i];
    }

    [回复]

    Dante 回复:

    是够纠结的。。。

    [回复]

  2. 依云说道:

    完了,这样一来我更不想学 PHP 了。。。

    [回复]

    Dante 回复:

    今天又发现php一个json_encode的问题。。唉,没办法,非学不可啊。。

    [回复]

  3. 星光居士说道:

    连腾讯都不鼓励用python,这说明了很多问题,也回答了很多问题

    [回复]

    Dante 回复:

    嗯,其实这也可以理解,毕竟团队的沉淀是很重要的,突然转向一种不熟悉的语言带来的规范,积累,招聘等问题都会很多。

    [回复]

    笨猫猫 回复:

    我汗~ 星光兄,我们居然发现你了。
    -_-!

    [回复]

    星光居士 回复:

    看来大家都是vim的人啊

    [回复]

    tkdchen 回复:

    说明什么问题了?
    回答什么问题了?

    [回复]

    星光居士 回复:

    呵呵,意会啊意会啊

    [回复]

  4. 挖路说道:

    :-)
    各个语言间的语法差异是肯定的,你得包容的看待这个问题啊。
    我刚学python的时候就为了他把列表和字典搞成两个类型而郁闷了老久,在php里,一个array就搞定一切了。

    [回复]

    Dante 回复:

    其实如果有原因的话,也不是不能接受,关键是实在想不通。。如果array看作一个对象的话,那[]操作符无非是他的一个成员函数,既然php中的对象可以这么用,没道理array就不可以嘛。。。

    [回复]

    依云 回复:

    Python 是注重效率的语言,所以 list 和 dict 肯定得分开了,一个是用动态数组实现的,另一个是 hash 表。而且,如果不分开的话,for..in 的时候你就要郁闷了(我就对 Javascript 的 for in 应用于数组时很不爽)。

    [回复]

    Dante 回复:

    确实如此,感觉php把两个array统一之后,很多东西被掩盖掉了,比如其关联数组中的key还是能够记住原来顺序:

    输出结果是:

    而对python或者stl的map,就会都变成有序的。

    [回复]

  5. sophiasmth说道:

    原因就是PHP很2

    [回复]

  6. narky说道:

    PHP其他都还好,就是这个比较纠结。
    泥马连ASP都能支持部分连缀,有木有!!!

    比如:conn.execute(“select top 1 username from table where id=1″)(0)

    [回复]

  7. PHP我不熟……不发表意见哈。

    [回复]

  8. 全恒壮说道:

    PHP确实不能这么用。取得数组第1个元素,有时会借助一个函数 current(get());。为什么这么设计就想不通了,或许就是PHP的一个缺陷吧,另外PHP函数返回值类型本来是不确定的,直接这样用不好吧。

    [回复]

  9. terrysco说道:

    每个脚本语言都有自己的习惯,与其深究于这种小问题,不如多花点时间在PHP架构上。

    [回复]

    Dante 回复:

    呵呵,见仁见智。

    [回复]

  10. qq说道:

    原来vimer.cn还是公司同事的.从oa上点过来的:)

    [回复]

    Dante 回复:

    呵呵是啊~~

    [回复]

  11. 流年说道:

    一开始也郁闷过,不过自己用的时候,返回的数组貌似多用于迭代,这样子保存临时变量反而更好一点。。
    至于php为啥这样设计,倒也不知道

    [回复]

  12. [...] http://www.vimer.cn/2011/04/php%E6%97%A0…%9E%E7%9A%84%E6%95%B0%E7%BB%84.html   php无法用下标操作函数返回的数组 [...]

  13. Jaylyn说道:

    I had no idea how to approach this befroe—now I’m locked and loaded.

    [回复]

  14. 无缺说道:

    其实我个人不赞成那中一长串式的写法,而赞成把操作拆分开,这样操作粒度更细更容易控制,也更清楚。我觉得那种一长串的东西看着头疼…

    仁者见仁啦,^_^。

    [回复]

    Dante 回复:

    哈哈,的确见仁见智~
    在C、C++编程的时候,我也不会用连缀~ 在用django的时候就比较多

    [回复]

  15. zjstandup说道:

    php中[]符号针对变量的

    [回复]

    Dante 回复:

    我的理解是,所谓的变量只不过是指向数据的一个指针。
    所以还是说不通的……

    [回复]

  16. seatle说道:

    不是不支持,是目前用的比较多的版本不支持,新出的5.3.3版本就支持了

    [回复]

  17. seatle说道:

    像这种小功能,要弄太简单了,只是之前没人提交而已,一提交,PHP下个版本马上就支持了

    [回复]

  18. iminto说道:

    php5.4支持了。

    [回复]

    Dante 回复:

    嗯,这样有些时候,语句就可以少几行了

    [回复]

  19. istrone说道:

    PHP5.4支持这种用法了!

    [回复]

  20. PHP学习说道:

    博客文章都还好 欢迎回访http://www.iiwnet.com

    [回复]

  21. a说道:

    php版本问题。低版本不支持。。

    [回复]

发表评论