标签:打印 for 静态 fun 赋值 ati 二次 执行 依次
一、$a = 0;
$a[] = 2; // 不能将标量值用作数组 PHP Warning: Cannot use a scalar value as an array
$arr = [‘1‘, ‘2‘];
foreach($arr as $k=>$v){
if($k == 0){
$adm = ‘3333‘;
}else if($k == 1){
$adm[] = ‘test‘; // PHP致命错误:Uncaught error:[]运算符不支持/code/main中的字符串。PHP Fatal error: Uncaught Error: [] operator not supported for strings
}
}
var_dump($adm);// 字符串不再支持 空索引运算符。将空索引运算符应用于字符串(例如$adm[] = $x)会引发致命错误,而不是无声地转换为数组。 若将else if 里改为 $adm[1] = ‘test‘,则不会报错。 故字符串不再支持空索引运算符
二、$a = [1=>5,5=>8,22,2=>‘8‘,81];
var_dump($a);// [ 1=>5, 5=>8, 6=>22, 2=>‘8‘, 7=>81 ]; 索引数组的下标定义
三、$arr = array(‘3‘, ‘2‘, ‘1‘);
foreach($arr as &$v){} // 此次循环遍历,将$v的指针指向下标为2的位置,打印$arr,数据不会变。
//var_dump($arr); // 即此次便利仍未 [‘3‘, ‘2‘, ‘1‘]
foreach($arr as $v){//因为上次循环已将$v指针指向了下标为2的位置,故改变$v的值,也即是改变下标为2的值
var_dump($arr);// 第一次循环,给$v赋值3,即下标为2的位置也为3,故输出[‘3‘, ‘2‘, ‘3‘]
// 第二次循环,给$v赋值2,即下标为2的位置也为2,故输出[‘3‘, ‘2‘, ‘2‘]
// 第三次次循环,此时$arr = [‘3‘, ‘2‘, ‘2‘],不再是原来的[‘3‘, ‘2‘, ‘1‘],给$v赋值2,即下标为2的位置也为2,故输出[‘3‘, ‘2‘, ‘2‘]
}
var_dump($arr); // 因为第一次循环遍历修改了$v指针的指向,故第二次循环,随着$v值的变化,$v指针指向的位置也会随之改变。故输出[‘3‘, ‘2‘, ‘2‘]
四、$count = 5;
function get_count(){
static $count = 0;
return ++$count;
}
echo $count++; // 先输出后执行++, 执行下一行前$count++变为6,故输出5,
echo ++$count; // $count = 6, 先执行++,$count变为7后输出,故输出7
// static静态变量作用于仅限于函数内部,且若不做unset(),则此次变更的值,下次调用函数,仍然适用。eg:
get_count(); // static $count = 0, 执行++后输出,static $count = 1; 此时return $count = 1;
echo get_count(); // 再次调用函数,static $count沿用上次函数变更后的值即static $count = 1; 后先执行++后输出,即输出为2
五、$arr = [1, ‘aa‘ => 2, 3, 4];
foreach($arr as $k=>$v){
print($k == ‘aa‘ ? 5 : $v); // 输出结果依次为 5534
}
// int 和 string 做比较判断时,会将string转换为int型来比较,字符串转换为整型结果为0
// 故 0 == ‘aa‘ 会返回true,都是0 若 0 === ‘aaa‘ ,则返回false,因为===全等比较,要判断类型
标签:打印 for 静态 fun 赋值 ati 二次 执行 依次
原文地址:https://www.cnblogs.com/bestvish/p/12063524.html