如何解决如何在 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 举报,一经查实,本站将立刻删除。