大家好,我有一个问题,我是一个新程序员,缺乏基本的数组对象操作
我有一个情况,我需要删除数组中的数据,但我需要重新排列键的编号,如1, 2 ,3,如果我删除2,数字3应该是2。
$user_list = [
"user_1" => ["user_id" => 1234],
"user_2" => ["user_id" => 1324],
"user_3" => ["user_id" => 3321]
];如果我删除number2,数据应该是这样的
$user_list = [
"user_1" => ["user_id" => 1234],
"user_2" => ["user_id" => 3321]
];我已经像这样编码了
$user_list = [
"user_1" => ["user_id" => 1234],
"user_2" => ["user_id" => 1324],
"user_3" => ["user_id" => 3321]
];
foreach($user_list as $key => $value){
if($value["user_id"] == $user_id){
unset($key);
}
}我如何重新排列它?,我试着学习到足够深,但我现在被困住了
发布于 2022-09-19 06:51:47
根据我对您的问题的理解,我认为您希望删除特定元素的值,而不是关键。相反,您希望将特定键的值替换为关联数组的下一个键的值,以此类推,最后删除关联数组的最后一个键。由此,我得出了以下解决方案:
$arr1 = $user_list = [
"user_1" => "1234",
"user_2" => "1324",
"user_3" => "3321"
];
$keys = array_keys($arr1);
$searchKey = "user_2";
$startIndex = array_search($searchKey, $keys);
for($i = $startIndex; $i < count($keys) - 1; $i++){
$arr1[$keys[$i]] = $arr1[$keys[$i+1]];
}
unset($arr1[$keys[count($keys) - 1]]);
print_r($arr1);发布于 2022-09-21 05:12:23
我已经找到了一个比@Varad更简单的解决问题的方法,答案是工作,但是如果你对它有了新的理解,这就是我的代码。
$_key = 1;
$dataTemp = array();
foreach ($getDataFirebase['user_list'] as $key => $value) {
if ($params['user_id'] == $value['user_id']) {
unset($getDataFirebase['user_list'][$key]);
}
if ($params['user_id'] != $value['user_id']) {
$dataTemp['user_' . $_key] = $value;
$_key++;
}
}我遇到的问题是将$getDataFirebase‘’user_list‘的键更改为新的键,并将其组织起来,因此,只有键更改后,我才创建一个新变量来存储user_list及其完成的新结构数据。
https://stackoverflow.com/questions/73769191
复制相似问题