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

How to reset array index after unset key in foreach loop in php?

我正在使用 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_valuesarray_merge,但它对我不起作用。 我尝试用 unset 替换 array_splice,但它没有删除数据。

您的代码中至少有 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 重新索引您的数组。