这是PHP操作数组的基本APP,但小APP有很大的用途。 另外,如果不小心操作错误,也有可能制造意想不到的错误。
最近写程序的时候组装了一个搜索数组,要求各栏的搜索条件还不一样,去掉那里获取的搜索条件数组不属于该栏的,一开始没想到,直接用unset,测试了一下,没关系; 但是,在测试了几个之后,出现了问题。 经过仔细检查,unset删除了具有指定键值的数组元素,但此函数返回的结果与原始字节序列保持不变。 需要自动更新。
demo :
$arr=['aaaa ',' bbbb ',' cccc ',' dddd'];
unset($arr[1];
输出结果:
阵列(
[0]='aaaa '
[2]='cccc '
[3]='dddd '
)
如果要对数组进行排序并按索引顺序进行排序,请使用array_values函数。
array_values($arr;
现在,我们将等待,直到创建连续的索引数组。
阵列(
[0]='aaaa '
[1]='cccc '
[2]='dddd '
)
当然,也可以使用array_splice函数删除元素而不保留索引,从而一步完成。 以下是示例。
$arr=['aaaa ',' bbbb ',' cccc ',' dddd'];
Array_splice($arr,1,1 );
上面的示例代码需要array_splice的第二个参数,它是删除元素的起始位置。 0表示第一个元素,如果值设置为正数,它将从数组中该值指定的偏移中删除。 如果此值设置为负数,则从数组末尾删除由该值指定的偏移量。 -2表示从数组倒数第二个元素开始。
结果:
阵列(
[0]='aaaa '
[1]='cccc '
[2]='dddd '
)
array_diff ()函数:为每个值删除多个元素并保留索引。 与unset一样,array_diff也保留索引。
$arr=['aaaa ',' bbbb ',' cccc ',' dddd'];
$RES=arrar_diff($arr,['aaaa ',' cccc'] );
var_dump($arr;
输出结果:
阵列(
[1]='bbbb '
[3]='dddd '
)
使用array_diff_key ()函数比较两个或多个数组的键名并返回一组差。 此函数比较两个或多个数组的键名,并返回一个增量数组,其中包含要比较的数组(array1)中但其他参数数组(例如array2或array3)中没有的所有键名。
$a1=array('a'='red ',' b'='green ',' c'='blue ' );
$a2=array('a'='red ',' c'='blue ',' d'='pink ' );
$result=array_diff_key($a1,$a2 );
print_r($result;
结果:阵列([ b ]=绿色) )。
根据自己的实际需要进行选择就可以了。