【问题标题】:Why only one item showing outside of foreach loop? [duplicate]为什么只有一个项目显示在 foreach 循环之外? [复制]
【发布时间】:2018-12-14 01:33:37
【问题描述】:

我想在 foreach 循环之外访问变量(数组)。当我在 foreach 循环内回显时,我得到了这个:

Reuslt inside foreach roop

$path='http://localhost:8000/api/devices';
try {
    $device= new Client();

    $answer= $device->request('GET', $path);
    $body = $answer->getBody();
    $status = 'true';
    $message = 'Data found!';
    $final= json_decode($body);

    foreach ($final as $res) {
        $id = $res->clientId;
        echo $id;
    }

在循环之外,我只得到数组的最后一项: Result outside foreachloop

$route='http://localhost:8000/api/devices';
try {
    $device= new Client();

    $answer= $client->request('GET', $answer);
    $body = $answer->getBody();
    $status = 'true';
    $message = 'Data found!';
    $final= json_decode($body);

    foreach ($finala $res) {
        $id = $res->clientId;
    }
    echo $id;

【问题讨论】:

  • 这正是应该发生的事情。你到底想要什么?预期输出?
  • 是每个 ID 的调用,还是全部混在一起?如果单独进行循环调用
  • 调用代码是什么样的?
  • 查看我的新答案。请

标签: php laravel foreach guzzle


【解决方案1】:

你正在这样做:

foreach ($data as $item) {
    $id= $item->clientId;
}
echo $id;

因此,每次,您的最后一个 $id 值都会被擦除并获得新的当前 id 值。

如果你想要 ALL id,试试这个:

// Create an array
$id_array = array();
foreach ($data as $item) {
    // Add each id value in your array
    $id_array[]= $item->clientId;
}
// Here you can display your array and see that you have all value
var_dump($id_array);

现在,如果您想在 foreach 循环之后 echo(或使用)每个 id,您可以这样做:

foreach($id_array as $my_id) {
    echo $my_id;
}

【讨论】:

  • 感谢您的回答,所以如果我想使用我必须在 foreach 循环中执行的所有操作?
  • 这取决于你想用它们做什么 :) 但请记住,如果你想创建一个 foreach 循环并在外面获取所有值,你需要构建一个数组并将每个值添加到 (或其他方式,如字符串连接,再次:这取决于你想要做什么)
  • 查看我的新答案。请
猜你喜欢
  • 1970-01-01
  • 2015-06-17
  • 2013-11-06
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多