软件开发: 06 2008存档
用眼睛看都看出来文本文件里有相邻的两行是一模一样的,但用uniq命令就是不能去重,怪异。后来发现是系统的LC_ALL为空....执行 export LC_ALL=POSIX ,uniq恢复正常了。
看看这段php代码:
$arr1=array();
$arr1["8700"]="apple";
$arr1["5300"]="banana";
$arr2=array();
var_dump($arr1);
var_dump(array_merge($arr1,$arr2));
结果是:
array(2) {
[8700]=>
string(5) "apple"
[5300]=>
string(6) "banana"
}
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
}
可见,“8700”和“5300”都被php的数组当成了数字,于是在数组合并的时候对这一“编号”进行了调整。我试了$arr1[strval("8700")]="apple",没有效果,array就是不把8700当成字符串。最好只好在8700前面加了个空格。
最要命的是array_slice这么简单功能的函数也有这个毛病,擅自调整数组里数字型的key。看来以后要多加小心。
$arr1=array();
$arr1["8700"]="apple";
$arr1["5300"]="banana";
$arr2=array();
var_dump($arr1);
var_dump(array_merge($arr1,$arr2));
结果是:
array(2) {
[8700]=>
string(5) "apple"
[5300]=>
string(6) "banana"
}
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(6) "banana"
}
可见,“8700”和“5300”都被php的数组当成了数字,于是在数组合并的时候对这一“编号”进行了调整。我试了$arr1[strval("8700")]="apple",没有效果,array就是不把8700当成字符串。最好只好在8700前面加了个空格。
最要命的是array_slice这么简单功能的函数也有这个毛病,擅自调整数组里数字型的key。看来以后要多加小心。
BEGIN {
list["a"]="apple";
list["b"]="banana";
if(list["c"]=="cat")
{
print "Oh! A cat!";
}
}
END{
for(var in list)
{
print var","list[var];
}
}
输出结果是:
a,apple
b,banana
c,
我并没有向关联数组 list 中写入“c"这个key,但它却在里面,而且没有对应的value。可见awk中的关联数组只要你访问了,它就把key塞了进去,这一点与c++的map不同。
就awk这一个特性,害我调试了两个小时,唉,以后还是要小心它的关联数组。
list["a"]="apple";
list["b"]="banana";
if(list["c"]=="cat")
{
print "Oh! A cat!";
}
}
END{
for(var in list)
{
print var","list[var];
}
}
输出结果是:
a,apple
b,banana
c,
我并没有向关联数组 list 中写入“c"这个key,但它却在里面,而且没有对应的value。可见awk中的关联数组只要你访问了,它就把key塞了进去,这一点与c++的map不同。
就awk这一个特性,害我调试了两个小时,唉,以后还是要小心它的关联数组。