【发布时间】:2018-01-13 13:49:18
【问题描述】:
我想用php从json数组中删除一个元素
[{"userid":"20"},{"userid":"17"},{"userid":"18"}]
我想让它像那样
[{"userid":"20"},{"userid":"18"}]
【问题讨论】:
-
如果它仍然是一个主题:我猜问题是在你的代码中,也许你可以分享更多细节?
我想用php从json数组中删除一个元素
[{"userid":"20"},{"userid":"17"},{"userid":"18"}]
我想让它像那样
[{"userid":"20"},{"userid":"18"}]
【问题讨论】:
$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]
[{"userid":"20"},{"userid":"18"}]。请再检查一遍。
如果你知道元素索引:
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));
【讨论】: