微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 php 的 foreach 循环中取消设置键后重置数组索引?

如何解决如何在 php 的 foreach 循环中取消设置键后重置数组索引?

我正在使用 unset 根据我的条件从数组中删除特定对象。但是在取消设置后,我得到的是一个对象而不是一个数组。我尝试使用 array_values 重新排列索引,但它对我不起作用。请帮我解决这个问题。下面是我的代码

$empId = '100'; //just for example.
foreach($jsonData['data'] => $key as $value){
    if($value['emp_id'] == $empId){
        unset($jsonData['data][$key]);
    }
}
after loop code//
return $jsonData;

取消设置数据后,它给了我一个对象。我试过 array_values,array_merge 但它对我不起作用。 我尝试用 array_splice 替换 unset,但它没有删除数据。

解决方法

您的代码中至少有 2 个严重的语法错误。

它应该是这样的:

<?php

// Some dummy data
$empId = '100';
$jsonData = [];
$jsonData['data'] = [
    'key' => ['emp_id' => 'value'],'key2' => ['emp_id' => '100']
];

// Fixed foreach loop
foreach($jsonData['data'] as $key => $value) {
    if ( $value['emp_id'] == $empId ) {
        unset( $jsonData['data'][ $key ] );
    }
}

print_r($jsonData);
,

key emp_id 是字符串,而不是索引。 您的代码未设置 emp_id。 或者,您可以使用 array_map 函数,然后使用 array_values 重新索引您的数组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。