1、array + array 和 array_merge区别
array + array 合并策略:不论key是字符串还是数值(包括数字型字符串)都采用同名舍弃,保留索引的策略
array_merge 合并策略:数值(包括数字型字符串键,会重建索引从0开始,字符串类型同名覆盖,保留索引
2、二进制操作
1.练习,用1个int的长度存储月打卡数据
// 二进制存储月打开数据
$a = 0b0;
$arr = [1,3,7,22,31];
// 使用指针操作
do {
$current = current($arr);
if ($current > 0 && $current < 32) {
$a |= 1 << $current - 1;
}
} while(next($arr));
// 检测是否打卡
$test = [1,4,13];
do {
$current = current($test);
if ((1 << $current - 1) & 1 != 0) {
echo $current . ' 打卡';
} else {
echo $current . ' 未打卡';
}
} while(next($test));
3、获取内存占用memory_get_usage
- 注意:只能作为参考,跟实际变量消耗有很大差距,误差很大,对普通的赋值无效,对函数、循环有效;
测试字符串内存占用
echo memory_get_usage().PHP_EOL;
$tmp = str_repeat("a",6);
echo memory_get_usage().PHP_EOL;
结果:72字节,误差很大
测试数组1个键值对内存占用
$box = ["PHP","JAVA","GO","PYTHON","C++","C#","JS","HTML","CSS"];
for($i=0;$i<10000;$i++){
for($j=0;$j<count($box);$j++){
$arr[] = $box[$j].$i;
}
}
sort($arr);
$start = memory_get_usage();
$arr_new = [];
do{
$arr_new[current($arr)] = true;
}while(next($arr));
$end = memory_get_usage();
print_r($arr_new);
var_dump(($end - $start) / count($arr_new)); // 平均每个键值对大小
结果:58字节
4.composer 安装
// 下载composer
php -r “copy(‘https://install.phpcomposer.com/installer’, ‘composer-setup.php’);”
php composer-setup.php
php -r “unlink(‘composer-setup.php’);”
sudo mv composer.phar /usr/local/bin/composer