Php 在混合关联数组和数值数组中仅重新校准数值索引

Php 在混合关联数组和数值数组中仅重新校准数值索引,php,mysql,arrays,Php,Mysql,Arrays,在我的程序中,我向一个表发送一个SQL查询,它返回一个我使用函数mysql\u fetch\u array()打开的资源。第一个参数是SQL查询的结果资源,但如果不使用下一个参数,则默认值是返回一个同时具有关联索引id和数字id的数组 这对我很有用,因为我正在使用这些结果创建另一个查询,所以需要访问关联id和数字id,因为我需要迭代这个数组,这涉及到增加数字。然而,我已经通过一个PHP函数删除了空值,现在剩下的是一个不连续的数字条目。我知道我可以使用array\u values()函数重新校准我

在我的程序中,我向一个表发送一个SQL查询,它返回一个我使用函数
mysql\u fetch\u array()
打开的资源。第一个参数是SQL查询的结果资源,但如果不使用下一个参数,则默认值是返回一个同时具有关联索引id和数字id的数组

这对我很有用,因为我正在使用这些结果创建另一个查询,所以需要访问关联id和数字id,因为我需要迭代这个数组,这涉及到增加数字。然而,我已经通过一个PHP函数删除了空值,现在剩下的是一个不连续的数字条目。我知道我可以使用
array\u values()
函数重新校准我的ID,但这会从数组中删除我的关联ID

有没有办法只重新校准我的数字ID而不删除关联ID?

e、 g

我删除了空值,即性别:

'id' = [0] = '0001'
'religion' = [2] = 'jewish'
现在我想将数值指数重新规范化为:

'id' = [0] = '0001'
'religion' = [1] = 'jewish'

我没有证实这一点,但我认为这应该有效。如果不告诉我,我将删除我的答案

$i=0;
foreach($array as $key=>$value) {
  $array2[$i] = $array2[$key] = $value;
  $i++;
}

我不认为这有一个内置函数,但是您可以通过数组进行迭代以获得数字索引值:

$data = array(
    'id'       => '0001',
    'gender'   => null,
    'religion' => 'jewish',
    0          => '0001',
    1          => null,
    2          => 'jewish',
);

$num_keys = array();
foreach ($data as $k => $v) {
    if ($v === null) {
        unset($data[$k]);
        continue;
    }
    if (is_numeric($k)) {
        $num_keys[$k] = $v;
        unset($data[$k]);
    }
}
ksort($num_keys);
$data = array_merge($data, array_values($num_keys));
var_dump($data);
$data = array(
    'id'       => '0001',
    'gender'   => null,
    'religion' => 'jewish',
    0          => '0001',
    1          => null,
    2          => 'jewish',
);

$num_keys = array();
foreach ($data as $k => $v) {
    if ($v === null) {
        unset($data[$k]);
        continue;
    }
    if (is_numeric($k)) {
        $num_keys[$k] = $v;
        unset($data[$k]);
    }
}
ksort($num_keys);
$data = array_merge($data, array_values($num_keys));
var_dump($data);