【问题标题】:How to access the loops for each如何访问每个循环
【发布时间】:2019-01-12 09:17:24
【问题描述】:

我有一个数组,其中有多个从数据库中获取的数据现在我正在尝试访问这样的数据:

<?php foreach ($comments as $comments) {
 print_r($comments);
}

在第一次运行时,它显示数组 A。当此循环第二次运行时,它显示 B

(A)
Array
(
    [0] => Array
        (
            [u] => ali
            [user_date] => 2011-01-19
            [up] => superthumb
        )
[1] => Array
    (
        [u] => Lucky
        [user_date] => 2011-01-19
        [up] => superthumb
    )

[2] => Array
    (
        [u] => Lucky
        [user_date] => 2011-01-19
        [up] => superthumb
    )

[3] => Array
    (
        [u] => aq
        [user_date] => 2011-01-19
        [up] => cute_glassess_girl
    )

[4] => Array
    (
        [u] => aq
        [user_date] => 2011-01-19
        [up] => cute_glassess_girl
    )

[5] => Array
    (
        [u] => aq
        [user_date] => 2011-01-19
        [up] => cute_glassess_girl
    )

[6] => Array
    (
        [u] => aq
        [user_date] => 2011-01-19
        [up] => cute_glassess_girl
    )

)

这是第二个数组:

    Array
(
    [0] => Array
        (
            [comment_id] => 7
            [comment_text] => kHi there i am your great fan
            [commenter_id] => 46
            [commented_post_fk_id] => 2
            [comment_date] => 2011-01-19
            [deleted] => 0
        )
[1] => Array
    (
        [comment_id] => 8
        [comment_text] => kHi there i am your great fan
        [commenter_id] => 47
        [commented_post_fk_id] => 2
        [comment_date] => 2011-01-19
        [deleted] => 0
    )

[2] => Array
    (
        [comment_id] => 9
        [comment_text] => lucky0473649
        [commenter_id] => 48
        [commented_post_fk_id] => 2
        [comment_date] => 2011-01-19
        [deleted] => 0
    )

[3] => Array
    (
        [comment_id] => 10
        [comment_text] => lucky0473649
        [commenter_id] => 49
        [commented_post_fk_id] => 2
        [comment_date] => 2011-01-19
        [deleted] => 0
    )

[4] => Array
    (
        [comment_id] => 11
        [comment_text] => lucky0473649
        [commenter_id] => 50
        [commented_post_fk_id] => 2
        [comment_date] => 2011-01-19
        [deleted] => 0
    )

[5] => Array
    (
        [comment_id] => 12
        [comment_text] => lucky0473649
        [commenter_id] => 51
        [commented_post_fk_id] => 2
        [comment_date] => 2011-01-19
        [deleted] => 0
    )

[6] => Array
    (
        [comment_id] => 17
        [comment_text] => ali
        [commenter_id] => 28
        [commented_post_fk_id] => 2
        [comment_date] => 2011-01-19
        [deleted] => 0
    )

[7] => Array
    (
        [comment_id] => 18
        [comment_text] => ali
        [commenter_id] => 28
        [commented_post_fk_id] => 2
        [comment_date] => 2011-01-19
        [deleted] => 0
    )

)

我只想回显一个项目如果我想访问评论文本,那么它应该是

foreach ($comments as $comments) {
 echo $comments['comment_text'];
}

但它返回未定义的索引

这是json编码结果后的答案:

[[{"u":"ali","user_date":"2011-01-19","up":"superthumb"},{"u":"Lucky","user_date":"2011-01-19","up":"superthumb"},{"u":"Lucky","user_date":"2011-01-19","up":"superthumb"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"}],[{"comment_id":"7","comment_text":"kHi there i am your great fan","commenter_id":"46","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"8","comment_text":"kHi there i am your great fan","commenter_id":"47","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"9","comment_text":"lucky0473649","commenter_id":"48","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"10","comment_text":"lucky0473649","commenter_id":"49","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"11","comment_text":"lucky0473649","commenter_id":"50","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"12","comment_text":"lucky0473649","commenter_id":"51","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"17","comment_text":"ali","commenter_id":"28","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"18","comment_text":"ali","commenter_id":"28","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"}]]

【问题讨论】:

  • 您只想在array 中显示一项?
  • foreach ($comments as $comment) { echo $comment['comment_text']; } 从单个实体中删除 s
  • 如果我将其更改为 $comment 即使它返回未定义的索引
  • 我只想访问评论文本评论者姓名评论者日期和评论图片名称
  • 我不知道我对什么投了反对票?谁给我否定的应该需要说明原因

标签: php arrays php-7


【解决方案1】:

根据您的 json“结果”,您只创建了一个包含 2 个子数组(A 和 B)的父数组。要访问第二个孩子,请在循环中引用 [1]

代码:(Demo)

$json = '[[{"u":"ali","user_date":"2011-01-19","up":"superthumb"},{"u":"Lucky","user_date":"2011-01-19","up":"superthumb"},{"u":"Lucky","user_date":"2011-01-19","up":"superthumb"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"},{"u":"aq","user_date":"2011-01-19","up":"cute_glassess_girl"}],[{"comment_id":"7","comment_text":"kHi there i am your great fan","commenter_id":"46","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"8","comment_text":"kHi there i am your great fan","commenter_id":"47","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"9","comment_text":"lucky0473649","commenter_id":"48","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"10","comment_text":"lucky0473649","commenter_id":"49","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"11","comment_text":"lucky0473649","commenter_id":"50","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"12","comment_text":"lucky0473649","commenter_id":"51","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"17","comment_text":"ali","commenter_id":"28","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"},{"comment_id":"18","comment_text":"ali","commenter_id":"28","commented_post_fk_id":"2","comment_date":"2011-01-19","deleted":"0"}]]';

$array = json_decode($json, true);
// var_export($array);

foreach ($array[1] as $comment) {
    echo $comment["comment_text"] , "\n";
}

输出:

kHi there i am your great fan
kHi there i am your great fan
lucky0473649
lucky0473649
lucky0473649
lucky0473649
ali
ali

这解决了你的问题,但老实说,我看不出在循环之前将数组组合成更复杂的结构的意义。

【讨论】:

    【解决方案2】:

    所以,看看你的循环,你已经将 $cmets 设置为 $cmets,试试这个:

    foreach ($comments as $comment) {
     echo $comment['comment_text'];
    }
    

    【讨论】:

    • 正如你所说,我将其更改为: foreach ($cmets as $c) { echo $c['comment_text']; }
    • 仍然返回相同的未定义索引
    • 您是在遍历数组 A 还是数组 B?
    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 2019-02-07
    • 2016-09-12
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2015-11-20
    相关资源
    最近更新 更多