【问题标题】:PHP Explode Array returns text 'Array'PHP 爆炸数组返回文本“数组”
【发布时间】:2012-12-09 14:53:00
【问题描述】:

我正在使用面包屑脚本,因为它的用途很明显,我正在尝试从结果中删除 &anyqueryafterhere。我正在使用 for each 通过数组来删除它,但它返回“数组”。我的代码是

if(empty($breadcrumbs)===false){
    foreach($breadcrumbs as &$r){
        $r = explode("&", $r);  
    }
}

目前,如前所述,它只返回Array,因此它显示为Array » Array。所以第一个问题,这是什么原因,第二个,我该如何分类?提前致谢。

【问题讨论】:

  • 你知道这只会返回最后一个 $breadcrumbs 对吗?您正在用 foreach 循环的每次迭代覆盖 $r 。 (当然是在你从 foreach 中删除 & 之后)
  • 他究竟是如何修改上述代码中的任何内容的?当然,除了覆盖 $r。
  • 他正在通过引用覆盖$r。在 PHP 中,他的行:$r = explode("&", $r)$breadcrumbs[$key] = explode("&", $r) 相同。他正在修改源数组,因为它是通过引用传递

标签: php arrays foreach


【解决方案1】:

试试

foreach($breadcrumbs as &$r){
                        ^-----is reference operator ..remove this Those are references, they are similar to "pointers" in C or C++. 

foreach($breadcrumbs as $r){

if(empty($breadcrumbs)===false){

更好的方法是

 if(!empty($breadcrumbs)){...}

好读

How does “&” operator work in PHP function?

【讨论】:

    【解决方案2】:

    替换

    foreach($breadcrumbs as &$r){
    

    与:

    foreach($breadcrumbs as $r){
    

    删除&

    【讨论】:

    • 现在完美运行!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2017-02-18
    • 2015-08-28
    • 2012-08-03
    相关资源
    最近更新 更多