如何操作数组键并再次对键排序



大家好,我有一个问题,我是新程序员,缺乏基本的数组对象操作

我有一种情况,我需要删除数组中的数据,但我需要根据编号(如1,2,3(重新排列键。如果我删除了2,那么数字3应该是数字2。

$user_list = [
"user_1" => ["user_id" => 1234],
"user_2" => ["user_id" => 1324],
"user_3" => ["user_id" => 3321]
];

如果我删除数字2,数据应该像这个

$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);
}
}

如何重新排列?,我试着学习足够深入,但我现在被卡住了

根据我对您问题的理解,我认为您希望删除特定元素的值,而不是键。相反,您希望用关联数组的下一个键的值替换特定键的值,依此类推,最后删除关联数组的最后一个键。由此,我得出了以下解决方案:

$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);

我已经解决了这个问题,我找到了一个比@Varad Karpe简单的方法,答案是工作,但如果你是新手,它需要很多理解这里是我的代码

$_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的新结构数据及其完成的

最新更新