A. php重置索引
为什么$array = array_values($array);后再打印出来的索引就是从0开始的
array_values()不是获取数组的值吗 跟重置索引有什么关系
===================
是获取数组的值,而且抛弃原数组的索引,重建一个数组.所以相当于重置索引.
B. php中数组的分类有哪两种
1、索引数组
有两种创建索引数组的方法:
索引是自动分配的(索引从 0 开始):
$cars=array("porsche","BMW","Volvo");
2、关联数组
关联数组是使用您分配给数组的指定键的数组。
有两种创建关联数组的方法:
$age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");
(2)php数组重建索引扩展阅读
实用函数——
有相当多的实用函数作用于数组,参见数组函数一节。
注: unset() 函数允许取消一个数组中的键名。要注意数组将不会重建索引。
<?php
$a = array( 1 => 'one', 2 => 'two', 3 => 'three' );
unset( $a[2] );
/* 将产生一个数组,定义为
$a = array( 1=>'one', 3=>'three');
而不是
$a = array( 1 => 'one', 2 => 'three');
*/
$b = array_values($a);
// Now $b is array(0 => 'one', 1 =>'three')
?>
foreach 控制结构是专门用于数组的。它提供了一个简单的方法来遍历数组。
C. php怎么把关联数组转成索引数组
PHP和PERL、VB不同,其只有“数组”,没有单独的“关联数组”类型,实际上PHP的所有数组都是关联数组,当没有指定键值的时候,键值为0、1、2??
D. php 数组索引值如何重新从0开始递增
对于索引数组,php还有提供了另外一个内置函数,能够重置数组索引array_merge($arr),当array_merge()只传入一个参数且键名是整数,返回该数组,其键名以0开始进行重新索引。
其中PHP中的数组实际上是一个有序映射。映射是一种把values关联到keys的类型。换言之,数组是特殊的变量,可以同时慎简保存一个以上的值。
在PHP中数组类型有三种:索引数组(带有数字索引的数组),关联数组(带有指定键的数组),多维数组(包含一个或多个数组的数组)。
(4)php数组重建索引扩展阅读:
注意事项:
1、两个相同的索引数组,同时执行,后面的会把前面的覆盖掉。
2、在php中 索引数组的下标可以不连续。
3、如果两个下标是早铅空会自动增加。
4、数组的自动增长下标,默认是从0开始的,自动增长的都是出现过的最大值加1。
5、关联数组不会影响到索引数组的排序规则,就算是索引数组是负数 也不会影响宽睁裤,最大值+1。
E. php二维数组处理,并重置索引。。
直接用 array_flip 或者 array_unique 是不行的,你这没有键名,必须要自己写函数
<?php
functionunique_arr($array2D,$stkeep=false,$ndformat=true)
{
//判断是否保留一级数组键(一级数组键可以为非数字)
if($stkeep)$stArr=array_keys($array2D);
//判断是否保留二级数组键(所有二级数组键必须相同)
if($ndformat)$ndArr=array_keys(end($array2D));
//降维,也可以用implode,将一维数组转换为用逗号连接的字符串
foreach($array2Das$v){
$v=join(",",$v);
$temp[]=$v;
}
//去掉重复的字符串,也就是重复的一维数组
$temp=array_unique($temp);
//再将拆开的数组重新组装
foreach($tempas$k=>$v)
{
if($stkeep)$k=$stArr[$k];
if($ndformat)
{
$tempArr=explode(",",$v);
foreach($tempArras$ndkey=>$ndval)$output[$k][$ndArr[$ndkey]]=$ndval;
}
else$output[$k]=explode(",",$v);
}
return$output;
}
$arr=array(
0=>array
(
0=>1,
1=>2
),
1=>array
(
0=>1,
1=>2
),
2=>array
(
0=>2,
1=>3
),
3=>array
(
0=>2,
1=>3
),
4=>array
(
0=>3,
1=>4
),
5=>array
(
0=>3,
1=>4
),
);
var_mp(array_values(unique_arr($arr)));
去重函数可参考: http://www.cnblogs.com/hakuci/archive/2012/05/09/2492659.html
.
F. PHP重置数组为连续数字索引的几种方式
PHP重置数组为连续数字索引的几种方式
比如这样的一个php数组:
[php]view plain
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
想要转换为这样的数组:
[php]view plain
$arr=array(
0=>'apple',
1=>'banana',
2=>'orange'
);
1、推荐的方式 array_values 方法
这样方式无论对普通数组还是关联数组都适用
[php]view plain
<?php
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
print_r(array_values($arr));
$arr1=array(
'name'=>'jerry',
'age'=>16,
'height'=>'18cm'
);
print_r(array_values($arr1));
输出结果:
[sql]view plain
[root@localhostphp]#phparray.php
Array
(
[0]=>apple
[1]=>banana
[2]=>orange
)
Array
(
[0]=>jerry
[1]=>16
[2]=>18cm
)
2、使用 array_merge 方法
该方法如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。所以只能适用于数字索引。
[php]view plain
<?php
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
print_r(array_merge($arr));
$arr1=array(
'name'=>'jerry',
'age'=>16,
'height'=>'18cm'
);
print_r(array_merge($arr1));
输出结果:
[php]view plain
[root@localhostphp]#phparray.php
Array
(
[0]=>apple
[1]=>banana
[2]=>orange
)
Array
(
[name]=>jerry
[age]=>16
[height]=>18cm
)
3、循环遍历
最原始的方式,臃肿且不够优雅,极力抵制。
[php]view plain
<?php
functionresetArr($arr){
$temp=array();
foreach($arras$v){
$temp[]=$v;
}
return$temp;
}
$arr=array(
1=>'apple',
3=>'banana',
5=>'orange'
);
print_r(resetArr($arr));
$arr1=array(
'name'=>'jerry',
'age'=>16,
'height'=>'18cm'
);
print_r(resetArr($arr1));
That‘s it!