在我的程序中,我向表发送一个SQL查询,它返回一个我使用函数mysql_fetch_array()
的资源。第一个参数是来自SQL查询的结果资源,但是如果你保留下一个参数,则默认是返回一个同时具有关联索引id和数字id的数组。
这对我很有用,因为我正在使用这些结果创建另一个查询,因此需要访问关联id和数字,因为我需要遍历这个涉及递增数字的数组。但是,我已经通过PHP函数删除了空值,现在我留下了一个不连续的数字条目。我知道我可以使用array_values()
函数重新校准我的ID,但这会从数组中删除我的关联ID。
有没有办法只重新校准我的数字ID但不删除关联ID?
e.g。
'id' = [0] = '0001'
'gender' = [1] = null
'religion' = [2] = 'jewish'
我删除了空值,即性别:
'id' = [0] = '0001'
'religion' = [2] = 'jewish'
现在我想将数字索引重新规范化为:
'id' = [0] = '0001'
'religion' = [1] = 'jewish'
答案 0 :(得分:0)
我没有证实这一点,但我认为这应该有效。如果不告诉我,我会删除我的答案。
$i=0;
foreach($array as $key=>$value) {
$array2[$i] = $array2[$key] = $value;
$i++;
}
答案 1 :(得分:0)
我认为没有内置函数,但您可以通过数组迭代来获取数字索引值:
$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);