【问题标题】:array row values are blank after the first row php第一行php之后数组行值是空白的
【发布时间】:2020-07-27 00:18:27
【问题描述】:

我遇到了一个奇怪的问题,在我遍历一个数组后,我可以从第一行获取所有第一个值,但在那一行之后,所有值都是空白的。

我有一个这样的数组(还有很多我只是缩短了它)

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [id] => 76
                )
            [1] => Array
                (
                    [id] => 77
                )
            [2] => Array
                (
                    [id] => 78
                )
        )
)

在我的 php 中,我使用循环遍历数组

$result = json_decode(json_encode($result), true);
$i = 2;
for ($x = 0; $x <= $i; $x++) {
     // I do stuff here
}

如果我像下面那样循环遍历数组,第一个值进入但最后两个是空白的,所以我得到(76)

$result = json_decode(json_encode($result), true);
$i = 2;
for ($x = 0; $x <= $i; $x++) {
     echo $result['data'][$x]['id'];
}

所以我检查了$x 以确保值是正确的(0,1,2) 并且它们回显为012

这就是奇怪的地方。如果我手动输入数字和echo,我会得到所有三行的正确值

echo $result['data'][0]['id'];
echo $result['data'][1]['id'];
echo $result['data'][2]['id'];

然后,我得到767778

我到底做错了什么?

【问题讨论】:

  • 无法复制:3v4l.org/V8ksG
  • @Nick 是的,我知道这让我大吃一惊,哈哈

标签: php arrays


【解决方案1】:

你应该使用“sizeof”

for($i = 0; $i < sizeof($result['data']) ;$i++){
    echo $result['data'][$i]['id'];
}

o foreach 循环:

foreach($result['data'] as $data){
    echo $data['id'];
}

【讨论】:

    【解决方案2】:

    你的循环应该是:

    $result = json_decode(json_encode($result), true);
    $data = $result['data']??null;
    
    for ($x = 0; $x < count($data); $x++) {
            echo $data[$x]['id'];
    }
    

    【讨论】: