如何在 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_values
、array_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 重新索引您的数组。
我正在使用 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
,但它对我不起作用。
我尝试用 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 重新索引您的数组。