【问题标题】:php unset using loop [closed]使用循环取消设置php [关闭]
【发布时间】:2020-11-08 21:09:36
【问题描述】:

为什么我不能用这段代码得到我想要的结果?

for($i=0; $i<count($results); $i++){
                            if($results[$i]->high == $results[$i]->open and $results[$i]->low == $results[$i]->close and $results[$i]->vol == 0){
                                unset($results[$i]);    
                        }
echo json_encode($results);

为什么我仍然得到相同的结果,就好像循环内的 unset 不起作用?但是如果我在循环中调用 echo 它的工作

【问题讨论】:

  • 你想要的结果是什么?您的问题不太清楚您实际上要做什么。
  • 您能否给我们一个$results 的样本,以便我们可以复制并可能帮助找到解决方案?顺便说一句,您没有关闭for 循环的}
  • 嗨@berend 结果有点像这样{"code":"TLKM","_date":"2020-11-09","_time":"09:17:00", "开":2890,"高":2890,"低":2880,"收":2890,"vol":260100} {"code":"TLKM","_date":"2020-11-09" ,"_time":"09:18:00","open":2880,"high":2890,"low":2880,"close":2880,"vol":288300} {"code":"TLKM ","_date":"2020-11-09","_time":"09:19:00","open":2890,"high":2890,"low":2880,"close":2890, "vol":3070200} 我想使用 for 循环删除其中的一些。但是如果我在循环之外调用结果,它看起来代码是异步工作的,所以结果显示原始结果没有未设置

标签: php for-loop


【解决方案1】:

使用您提供的示例 json 数据,我添加了一条与if 中的条件匹配的DUMMY 记录,因此它将是unset,如下所示:

<?php
$json = '[
   {
      "code":"TLKM",
      "_date":"2020-11-09",
      "_time":"09:17:00",
      "open":2890,
      "high":2890,
      "low":2880,
      "close":2890,
      "vol":260100
   },
   {
      "code":"TLKM",
      "_date":"2020-11-09",
      "_time":"09:18:00",
      "open":2880,
      "high":2890,
      "low":2880,
      "close":2880,
      "vol":288300
   },
   {
      "code":"DUMMIE",
      "_date":"2020-11-09",
      "_time":"09:19:00",
      "open":2890,
      "high":2890,
      "low":2880,
      "close":2880,
      "vol":0
   },
   {
      "code":"TLKM",
      "_date":"2020-11-09",
      "_time":"09:19:00",
      "open":2890,
      "high":2890,
      "low":2880,
      "close":2890,
      "vol":3070200
   }
]';

// turn json into associative array
$arr = json_decode($json, true);

// process the array
foreach ($arr as $key => $value) {
    if ($arr[$key]['high'] == $arr[$key]['open'] and $arr[$key]['low'] == $arr[$key]['close'] and $arr[$key]['vol'] == 0) {
        unset($arr[$key]);
    }
}

// array back to json format
$json = json_encode($arr);

看看demo

输出:

{
    "0": {
        "code": "TLKM",
        "_date": "2020-11-09",
        "_time": "09:17:00",
        "open": 2890,
        "high": 2890,
        "low": 2880,
        "close": 2890,
        "vol": 260100
    },
    "1": {
        "code": "TLKM",
        "_date": "2020-11-09",
        "_time": "09:18:00",
        "open": 2880,
        "high": 2890,
        "low": 2880,
        "close": 2880,
        "vol": 288300
    },
    "3": {
        "code": "TLKM",
        "_date": "2020-11-09",
        "_time": "09:19:00",
        "open": 2890,
        "high": 2890,
        "low": 2880,
        "close": 2890,
        "vol": 3070200
    }
}

【讨论】:

    猜你喜欢
    • 2017-05-22
    • 2017-05-05
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    相关资源
    最近更新 更多