【问题标题】:object(stdClass) Array and returning valuesobject(stdClass) 数组和返回值
【发布时间】:2013-05-28 09:50:38
【问题描述】:

我好像又被卡住了! - 我在星期五问了这个问题,@Bartdude 回答得很好 - Array output and date format

这输出了一个这样的数组 -

[0]=> object(stdClass)#270 (3) 
{ 
["Month(StartDate)"]=> string(1) "4" 
["Year(StartDate)"]=> string(4) "2013" 
["nrOfEvents"]=> string(2) "12" 
} 
[1]=> object(stdClass)#176 (3) 
{ 
["Month(StartDate)"]=> string(1) "5" 
["Year(StartDate)"]=> string(4) "2013" 
["nrOfEvents"]=> string(2) "19" 
} 
[2]=> object(stdClass)#114 (3) 
{ 
["Month(StartDate)"]=> string(1) "6" 
["Year(StartDate)"]=> string(4) "2013" 
["nrOfEvents"]=> string(2) "12" 
} 
}

然后在通过 Stack Exchange 进行一些搜索后,我发现这将返回 nrofEvents -

echo $results[0]->nrOfEvents
// Outputs - 12

我很难理解如何在 foreach 循环中访问数组中的 ["Month(StartDate)"]。

我的最终目标是实现一个包含月份名称的月份表,例如

| 三月 (12) | 四月(19) | 六月(12) |

| 七月(3) | 8 月(4) | 九月(5) |

任何帮助我理解的帮助都会很棒,并提前感谢。

【问题讨论】:

    标签: php arrays stdclass


    【解决方案1】:

    试试这个:

    foreach($array as $object) {
       echo $object->{'Month(StartDate)'}, '<br>';
    }
    

    【讨论】:

    • 嗨@Silkfire - 谢谢,在我发现你最容易使用的所有解决方案中,以我的知识水平,我已经能够大致得到它希望它成为。谢谢。
    【解决方案2】:

    这允许访问Month(StartDate):

    $results[0]->{'Month(StartDate)'}
    

    但你最好使用数组

    【讨论】:

    • 嗨@arnaud576875 - 你的也很棒,谢谢,我想我有点难过,因为我不知道添加大括号!
    【解决方案3】:
    SELECT Month(startdate) AS month, count(id) as nrOfEvents
    FROM wp_myEventDates
    GROUP BY Month(startdate)
    

    您可以通过以下方式获取月份值:

    echo $results[0]->month
    // Outputs - 4
    

    【讨论】:

    • 嗨@benomite 我真的以为我试过了 - 在我必须做的这件事的许多令人困惑的时刻,我一定是打错了一些东西!也谢谢你的回答。
    【解决方案4】:

    使用这个:

    $array = [array of dates]
    $formats = array();
    
    foreach($array as $key => $object)
    {
        $formats[] = date('M', $array[$key]->{Month(StartDate)}) . ' (' . $array[$key]->nrOfEvents . ')';
    }
    
    $formats = implode(' | ', $formats);
    

    但是:您应该认真考虑重命名数组值。 () 对变量名无效。

    【讨论】:

    • 嗨@Phil Cross,您的回答太棒了,几乎完成了我需要做的事情,但是我发现 Silkfire 的回答更容易(据我所知)水平 - 但是当我有时间时将更多地使用您的建议! - 谢谢。
    • 没问题 :) 享受吧! P.S:@Andy 不要忘记接受 Silkfire 的回答,也许还可以投票? :)
    • 嗨@Phil Cross - 我还不能投票 :( - 只有另外 3 个新手问题,我可以! - 再次感谢 :)
    猜你喜欢
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2018-02-10
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多