【问题标题】:delete json object form array with php [closed]用php删除json对象表单数组[关闭]
【发布时间】:2018-01-13 13:49:18
【问题描述】:

我想用php从json数组中删除一个元素

[{"userid":"20"},{"userid":"17"},{"userid":"18"}]

我想让它像那样

[{"userid":"20"},{"userid":"18"}]

【问题讨论】:

  • 如果它仍然是一个主题:我猜问题是在你的代码中,也许你可以分享更多细节?

标签: php json object


【解决方案1】:
$array = json_decode('[{"userid":"20"},{"userid":"17"},{"userid":"18"}]');

foreach ($array as $key=>$element) {
    if ($element->userid == "17") {
        unset($array[$key]);
    }
}

// delete the row with the index
$arrayFinal = array_values($array);
$output = json_encode($arrayFinal);

echo $output;

【讨论】:

  • 这是输出 {"0":{"userid":"20"},"2":{"userid":"18"}} 但我不想要那个键 [0, 2]
  • @AnaJentel 检查我的答案。它工作正常。
  • 我知道它正在工作,但我不想显示所有对象的 0、2 个键
  • 我的回答如你所愿。没有0、2键。输出为[{"userid":"20"},{"userid":"18"}]。请再检查一遍。
  • @Spectarion 解决方案是: $arrayFinal = array_values($array); $output = json_encode($arrayFinal);回声$输出;
【解决方案2】:

如果你知道元素索引:

unset($array[1]); // 1 is the index of element.

如果不知道元素索引:

// Deserialize the JSON into associative array.
$users = json_decode('[{"userid":"20"},{"userid":"17"},{"userid":"18"}]', true);

// For each user and it's index in array of users.
foreach ($users as $index => $user) {
    // If currently iterated user id is equals to 17.
    if ($user["userid"] == 17) {
        // Remove it from an array of users.
        unset($users[$index]);
        // Stop loop execution.
        break;
    }
}

// Echo all elements inside an array of users as JSON.
echo json_encode(array_values($users));

【讨论】:

    猜你喜欢
    • 2017-06-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2020-11-10
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多