Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-在取消设置值后对数组键重新编号_Php - Fatal编程技术网

PHP-在取消设置值后对数组键重新编号

PHP-在取消设置值后对数组键重新编号,php,Php,我使用PHP数组来存储用户在网站上跟踪的所有人的数据。以下是我如何设置它的示例: $data = array( ['user1'] => array( [0] => 'somedata', [1] => 'moredata', [2] => array( [0] => 'Jim', [1] => 'Bob', [2] => 'N

我使用PHP数组来存储用户在网站上跟踪的所有人的数据。以下是我如何设置它的示例:

$data = array(
    ['user1'] => array(
        [0] => 'somedata',
        [1] => 'moredata',
        [2] => array(
            [0] => 'Jim',
            [1] => 'Bob',
            [2] => 'Nick',
            [3] => 'Susy',
        )
    ),
);
如您所见,列出所有好友的是$data[user][2]。数组的外观与键的[0]和[1]完全相同,因为var_export()就是这样做的。现在我的问题是这个。当某人解除跟踪某人时,我使用unset()从数组中删除该朋友。因此,如果我想在上面的例子中解开Bob的谜团,剩下的将是Jim、Nick和Susy


现在唯一的问题是数组键在重命名时没有正确重新编号。因此,一旦Bob离开,它将从0变为2,而不是Nick使用数组键1。现在我可以自己想办法解决这个问题,但我更希望有一些PHP函数专门解决这个问题,也就是说,将这些数组键重命名为正确的数字顺序。我签出了sort()函数,但这似乎是为了按字母顺序排列数组值而不是键。

您可以使用array\u

$removedElement = array_splice($data['user1'][2], $indexOfUserToRemove, 1);

这会改变原始数组,但仅当数组的键是数字时才会对其重新编制索引。

如果您只想在该级别上对数组重新编制索引,只需使用array_values()

例如,假设要删除“bob”条目,只需在删除它之后调用bob正上方级别的array_值即可

unset($data['user1'][2][1]);
$data['user1'][2] = array_values($data['user1'][2]);
我会这样使用:

$data['user1'][2]=数组_值($data['user1'][2])

以下是完整的代码:

$data = array(
    'user1' => array(
        'somedata',
        'moredata',
        array(
            'Jim',
            'Bob',
            'Nick',
            'Susy',
        )
    ),
);

unset($data['user1'][2][1]);
var_export ($data['user1'][2]);

echo "\n\n";
$data['user1'][2]=array_values($data['user1'][2]);

var_export($data['user1'][2]);
结果

array (
  0 => 'Jim',
  2 => 'Nick',
  3 => 'Susy',
)

array (
  0 => 'Jim',
  1 => 'Nick',
  2 => 'Susy',
)
请在此处查看它的实际操作:

您可以使用以数字方式重新索引阵列

$newArray = array_values($array);

您使用的是
var\u export()
并将阵列保存到磁盘或类似文件中,而不是将其存储在数据库中?我还将研究这篇文章,看看哪篇(这篇文章或另一篇文章)效果更好。谢谢