请注意,当复制数组时,会保留其成员的“引用状态”( http://www.php.net/manual/en/language.references.whatdo.php ).
阵列( 钥匙 => 价值 , 键2 => 值2 , 键3 => 值3 , ... )
注释 :
存在替换的短数组语法
数组() 具有
[] .
<? php(电话)
$数组 =数组(
“foo” => “酒吧” ,
“酒吧” => “foo” ,
);
//使用短数组语法
$数组 = [
“foo” => “酒吧” ,
“酒吧” => “foo” ,
];
?>
+
"8"
8
"08"
8.7
8
真的
1
假
0
无效的
""
偏移类型非法
<? php(电话)
$数组 =数组(
1 => “a” ,
"1" => “b” ,
1.5 => “c” ,
真的 => “d” ,
);
变量转储 ( $数组 );
?>
数组(1){ [1]=> 字符串(1)“d” }
<? php(电话)
$数组 =数组(
“foo” => “酒吧” ,
“酒吧” => “foo” ,
100 => - 100 ,
- 100 => 100 ,
);
变量转储 ( $数组 );
?>
数组(4){ [“foo”]=> 字符串(3)“bar” [“bar”]=> 字符串(3)“foo” [100]=> 整数(-100) [-100]=> 整数(100) }
<? php(电话)
$数组 =数组( “foo” , “酒吧” , “你好” , “世界” );
变量转储 ( $数组 );
?>
数组(4){ [0]=> 字符串(3)“foo” [1]=> 字符串(3)“bar” [2]=> 字符串(5)“hello” [3]=> 字符串(5)“世界” }
<? php(电话)
$数组 =数组(
“a” ,
“b” ,
6 => “c” ,
“d” ,
);
变量转储 ( $数组 );
?>
数组(4){ [0]=> 字符串(1)“a” [1]=> 字符串(1)“b” [6]=> 字符串(1)“c” [7]=> 字符串(1)“d” }
<? php(电话)
$数组 =数组(
1 => “a” ,
'1' => “b” , //值“a”将被“b”覆盖
1.5 => “c” , //值“b”将被“c”覆盖
- 1 => “d” ,
'01' => “e” , //由于这不是整数字符串,因此不会覆盖1的键
'1.5' => “f” , //由于这不是整数字符串,因此不会覆盖1的键
真的 => “g” , //值“c”将被“g”覆盖
假 => “h” ,
'' => “i” ,
无效的 => “j” , //值“i”将被“j”覆盖
“k” , //值“k”被指定为键2。 这是因为在此之前最大的整数键是1
2 => “我” , //值“k”将被“l”覆盖
);
变量转储 ( $数组 );
?>
数组(7){ [1]=> 字符串(1)“g” [-1]=> 字符串(1)“d” ["01"]=> 字符串(1)“e” ["1.5"]=> 字符串(1)“f” [0]=> 字符串(1)“h” [“”]=> 字符串(1)“j” [2]=> 字符串(1)“l” }
<? php(电话)
$数组 =数组(
“foo” => “酒吧” ,
42 => 24 ,
“多个” =>数组(
“维度” =>数组(
“数组” => “foo”
)
)
);
变量转储 ( $数组 [ “foo” ]);
变量转储 ( $数组 [ 42 ]);
变量转储 ( $数组 [ “多个” ][ “维度” ][ “数组” ]);
?>
字符串(3)“bar” 整数(24) 字符串(3)“foo”
注释 :
在PHP 8.0.0之前,方括号和花括号可以互换使用 用于访问数组元素(例如。
$数组[42] 和
$数组{42} 都会在上面的示例中执行相同的操作)。 从PHP 7.4.0开始,花括号语法已被弃用,从PHP 8.0.0开始不再受支持。
<? php(电话)
功能 获取数组 () {
返回数组( 1 , 2 , 三 );
}
$second元素 = 获取数组 ()[ 1 ];
?>
注释 :
试图访问尚未定义的数组键是 与访问任何其他未定义变量相同: 一个
E_警告 -级别错误消息 (
E_通知 -PHP 8.0.0之前的级别)将是 发布,结果将为
无效的 .
注释 :
数组取消引用不是 一串 产量
无效的 。在PHP 7.4.0之前,它没有发出错误消息。 从PHP 7.4.0开始
E_通知 ; 从PHP 8.0.0开始,此问题
E_警告 .
$arr(美元)[ 钥匙 ] = 价值 ; $arr[]= 价值 ; // 钥匙 可能是 整数 或 一串 // 价值 可以是任何类型的任何值
注释 : 从PHP7.1.0开始,对字符串应用空索引操作符会引发致命错误 错误。 以前,字符串被静默转换为数组。
<? php(电话)
$arr(美元) =数组( 5 => 1 , 12 => 2 );
$arr(美元) [] = 56 ; //这与$arr[13]=56相同;
//在脚本的这一点上
$arr(美元) [ “x” ] = 42 ; //这将向添加新元素
//键为“x”的数组
未设置( $arr(美元) [ 5 ]); //这将从数组中删除元素
未设置( $arr(美元) ); //这将删除整个数组
?>
注释 :
如上所述,如果未指定键,则现有 整数 索引,新的密钥将是最大值 值加1(但至少为0)。 如果没有 整数 指数仍然存在,关键是 是
0 (零)。
请注意,用于此操作的最大整数键 不需要 当前存在于 阵列 .只需要有 存在于 阵列 在上一次 阵列 重新诱导。 以下示例说明了:
<? php(电话) //创建一个简单的数组。 $数组 =数组( 1 , 2 , 三 , 4 , 5 ); 打印(r) ( $数组 ); //现在删除所有项,但保持数组本身不变: foreach公司( $数组 作为 1美元 => 价值$ ){ 未设置( $数组 [ 1美元 ]); } 打印(r) ( $数组 ); //附加一个项(请注意,新键是5,而不是0)。 $数组 [] = 6 ; 打印(r) ( $数组 ); //Re-index公司: $数组 = 数组_值 ( $数组 ); $数组 [] = 7 ; 打印(r) ( $数组 ); ?>
上述示例将输出: 阵列 ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 阵列 ( ) 阵列 ( [5] => 6 ) 阵列 ( [0] => 6 [1] => 7 )
<? php(电话)
$source_array(源阵列) = [ “foo” , “bar” , “呸” ];
[ $foo美元 , $巴 , 美元baz ] = $source_array(源阵列) ;
回声 $foo美元 ; //打印“foo”
回声 $巴 ; //打印“bar”
回声 美元baz ; //打印“baz”
?>
<? php(电话)
$source_array(源阵列) = [
[ 1 , “约翰” ],
[ 2 , “简” ],
];
foreach公司( $source_array(源阵列) 作为[ $id美元 , $名称 ]){
//此处使用$id和$name的逻辑
}
?>
<? php(电话)
$source_array(源阵列) = [ “foo” , “bar” , “呸” ];
//将索引2处的元素赋给变量$baz
[, 美元baz ] = $source_array(源阵列) ;
回声 美元baz ; //打印“baz”
?>
<? php(电话)
$source_array(源阵列) = [ “foo” => 1 , “bar” => 2 , “呸” => 三 ];
//将索引为“baz”的元素赋给变量$three
[ “呸” => 三美元 ] = $source_array(源阵列) ;
回声 三美元 ; //打印3
$source_array(源阵列) = [ “foo” , “bar” , “呸” ];
//将索引2处的元素分配给变量$baz
[ 2 => 美元baz ] = $source_array(源阵列) ;
回声 美元baz ; //打印“baz”
?>
<? php(电话)
美元 = 1 ;
十亿美元 = 2 ;
[ 十亿美元 , 美元 ] = [ 美元 , 十亿美元 ];
回声 美元 ; //打印2
回声 十亿美元 ; //打印1
?>
注释 :
扩散运算符(
... )分配中不支持。
注释 :
试图访问尚未定义的数组键是 与访问任何其他未定义的变量相同: 一个
E_警告 -电平错误消息 (
E_通知 -PHP 8.0.0之前的级别)将是 发布,结果将为
无效的 .
注释 :
这个 取消设置() 函数允许从 阵列 。请注意阵列将 不 是 重新编制索引。 如果需要真正的“移除并移动”行为 阵列 可以使用 数组值() 功能。
<? php(电话) 美元 =数组( 1 => “一个” , 2 => “两个” , 三 => “三个” ); 未设置( 美元 [ 2 ]); /*将生成一个定义为 $a=数组(1=>“一”,3=>“三”); 而不是 $a=数组(1=>“一”,2=>“三”); */ 十亿美元 = 数组_值 ( 美元 ); //现在$b是数组(0=>“one”,1=>“tree”) ?>
$foo[bar]
<? php(电话)
$foo美元 [ 酒吧 ] = “敌人” ;
回声 $foo美元 [ 酒吧 ];
//等
?>
注释 : 这并不意味着 总是 引用密钥。 不要 引号键 常数 或 变量 ,因为这将阻止 PHP来解释它们。
<? php(电话) 错误_报告 ( 全部(_ALL) ); ini_集 ( '显示错误' , 真的 ); ini_集 ( 'html_errors' , 假 ); //简单数组: $数组 =数组( 1 , 2 ); $count个 = 计数 ( $数组 ); 对于( 1美元 = 0 ; 1美元 < $count个 ; 1美元 ++) { 回声 “”正在检查“ 1美元 :\n“ ; 回声 “错误:” . $数组 [ “$i” ] . “\n” ; 回声 “好:” . $数组 [ 1美元 ] . “\n” ; 回声 “错误: { $数组 [ “$i” ]} \n“ ; 回声 “好: { $数组 [ 1美元 ]} \n“ ; } ?>
上述示例将输出: 正在检查0: 注意:未定义索引:第9行的/path/to/script.html中的$i 错误: 好:1 注意:未定义索引:第11行/path/to/script.html中的$i 错误: 好:1 检查1: 注意:未定义索引:第9行的/path/to/script.html中的$i 错误: 好:2 注意:未定义索引:第11行/path/to/script.html中的$i 错误: 好:2
<? php(电话)
//显示所有错误
错误_报告 ( 全部(_A) );
$arr(美元) =数组( “水果” => “苹果” , “素食” => “胡萝卜” );
//正确
打印 $arr(美元) [ “水果” ]; //苹果
打印 $arr(美元) [ “蔬菜” ]; //胡萝卜
//不正确。 这可以工作,但也会抛出一个E_NOTICE级别的PHP错误,因为
//一个名为fruit的未定义常量
//
//注意:使用未定义的常量水果-假定“水果”在。。。
打印 $arr(美元) [ 水果 ]; //苹果
//这定义了一个常数来演示发生了什么。值“veggie”
//分配给一个名为fruit的常量。
定义 ( “水果” , “素食” );
//现在请注意区别
打印 $arr(美元) [ “水果” ]; //苹果
打印 $arr(美元) [ 水果 ]; //胡萝卜
//以下是可以的,因为它位于字符串中。不查找常量
//在字符串中,因此此处不出现E_NOTICE
打印 “你好 $arr(美元) [ 水果 ] " ; //你好,苹果
//有一个例外:字符串中围绕数组的大括号允许常量
//待解释
打印 “你好 { $arr(美元) [ 水果 ]} " ; //你好,胡萝卜
打印 “你好 { $arr(美元) [ “水果” ]} " ; //你好,苹果
//这将不起作用,并将导致分析错误,例如:
//分析错误:分析错误,应为T_STRING“或T_VARIABLE”或T_NUM_STRING“
//当然,这也适用于在字符串中使用超全局变量
打印 “你好 $arr(美元) [ “水果”]“ ;
打印 “你好 $_GET(获取) [ 'foo']“ ;
//级联是另一种选择
打印 “你好” . $arr(美元) [ “水果” ]; //你好,苹果
?>
<? php(电话)
回声 $arr(美元) [ 一些功能 ( $巴 )];
?>
<? php(电话)
$error_descriptions(错误描述) [ E_ERROR(错误) ] = “发生致命错误” ;
$error_descriptions(错误描述) [ E_警告 ] = “PHP发出警告” ;
$errordescriptions [ E_通知 ]= “这只是一个非正式通知” ;
?>
<? php(电话)
$error_descriptions(错误描述) [ 1 ] = “发生致命错误” ;
$error_descriptions(错误描述) [ 2 ] = “PHP发出警告” ;
$errordescriptions [ 8 ] = “这只是一个非正式通知” ;
?>
<? php(电话)
班 一个 {
私有的 十亿美元 ;
受保护的 加元 ;
公众的 $D美元 ;
功能 __构造 ()
{
$这个 ->{ 1 } = 无效的 ;
}
}
变量导出(_E) ((数组)新建 一个 ());
?>
阵列( '' . "\0" . ' A’。 "\0" . ' B'=>空, '' . "\0" . '*' . "\0" . ' C'=>空, 'D'=>空, 1=>空, )
<? php(电话)
班 一个 {
私有的 美元 ; //这将成为“\0A\0A”
}
班 B类 延伸 一个 {
私有的 美元 ; //这将成为“\0B\0A”
公众的 AA美元 ; //这将成为“AA”
}
变量转储 ((数组)新建 B类 ());
?>
数组(3){ [“BA”]=> 无效的 [“AA”]=> 无效的 [“AA”]=> 无效的 }
<? php(电话)
//使用短数组语法。
//此外,还可以使用array()语法。
$arr1(美元) = [ 1 , 2 , 三 ];
$arr2(美元) = [... $arr1(美元) ]; //[1, 2, 3]
$arr3美元 = [ 0 , ... $arr1(美元) ]; //[0, 1, 2, 3]
$arr4美元 = [... $arr1(美元) , ... $arr2(美元) , 111 ]; //[1, 2, 3, 1, 2, 3, 111]
$arr5美元 = [... $arr1(美元) , ... $arr1(美元) ]; //[1,2,3,1,2,3]
功能 获取箭头 () {
返回[ “a” , “b” ];
}
$arr6美元 = [... 获取箭头 (), “c” => “d” ]; //['a','b','c'=>'d']
?>
<? php(电话)
//字符串键
$arr1美元 = [ “a” => 1 ];
$arr2(美元) = [ “a” => 2 ];
$arr3美元 = [ “a” => 0 , ... $arr1(美元) , ... $arr2(美元) ];
变量转储 ( $arr3美元 ); //[“a”=>2]
//整数键
$arr4美元 = [ 1 , 2 , 三 ];
$arr5美元 = [ 4 , 5 , 6 ];
$arr6美元 = [... $arr4美元 , ... $arr5美元 ];
变量转储 ( $arr6美元 ); // [1, 2, 3, 4, 5, 6]
//即[0=>1,1=>2,2=>3,3=>4,4=>5,5=>6]
//其中未保留原始整数键。
?>
注释 :
注释 :
在PHP 8.1之前,不支持解包具有字符串键的数组:
<? php(电话) $arr1(美元) = [ 1 , 2 , 三 ]; $arr2(美元) = [ “a” => 4 ]; $arr3美元 =[。。。 $arr1(美元) , ... $arr2(美元) ]; //致命错误:未捕获错误:无法解包example.php:5中包含字符串键的数组 $arr4美元 = [ 1 , 2 , 三 ]; $arr5美元 = [ 4 , 5 ]; $arr6美元 = [... $arr4美元 , ... $arr5美元 ]; //工程。 [1,2,3,4,5] ?>
<? php(电话)
//这:
美元 =数组( “颜色” => “红色” ,
“味道” => “甜蜜的” ,
“形状” => “圆形” ,
“名称” => “苹果” ,
4 //键将为0
);
十亿美元 =数组( “a” , “b” , “c” );
// . . . 与此完全等价:
美元 =阵列();
美元 [ “颜色” ] = “红色” ;
美元 [ “味道” ] = “甜蜜的” ;
美元 [ “形状” ] = “圆形” ;
美元 [ “名称” ]= “苹果” ;
美元 [] = 4 ; //键将为0
十亿美元 =阵列();
十亿美元 [] = “a” ;
十亿美元 [] = “b” ;
十亿美元 [] = “c” ;
//执行上述代码后,$a将成为数组
//数组(‘color’=>‘red’,‘味觉’=>’sweet’,‘shape’=>“round”,
//“name”=>“apple”,0=>4),$b将是数组
//数组(0=>“a”,1=>“b”,2=>“c”),或简单地数组(“a”、“b”、“c”。
?>
<? php(电话)
//数组作为(属性-)映射
$地图 =数组( '版本' => 4 ,
“操作系统” => “Linux” ,
“lang”(语言) => “英语” ,
'短标签' => 真的
);
//严格数字键
$数组 =数组( 7 ,
8 ,
0 ,
156 ,
- 10
);
//这与数组相同(0=>7,1=>8,…)
$切换 =数组( 10 , //键=0
5 => 6 ,
三 => 7 ,
“a” => 4 ,
11 , //key=6(整数诱导的最大值为5)
'8' => 2 , //键=8(整数!)
'02' => 77 , //键='02'
0 => 12 //值10将被12覆盖
);
//空数组
$空 =阵列();
?>
<? php(电话)
$种颜色 =数组( “红色” , “蓝色” , “绿色” , “黄色” );
foreach公司( $种颜色 作为 $颜色 ){
回声 “你喜欢吗 $颜色 ? \n“ ;
}
?>
你喜欢红色吗? 你喜欢蓝色吗? 你喜欢绿色吗? 你喜欢黄色吗?
<? php(电话)
foreach公司( $种颜色 作为& $颜色 ){
$颜色 = mb_strtoupper(mb _ strtoupper) ( $颜色 );
}
未设置( $颜色 ); /*确保以下写入
$color不会修改最后一个数组元素*/
打印(r) ( $种颜色 );
?>
阵列 ( [0]=>红色 [1] =>蓝色 [2] =>绿色 [3] =>黄色 )
<? php(电话)
第一季度$ =数组( 1 => “一月” , “二月” , “三月” );
打印(r) ( 第一季度$ );
?>
阵列 ( [1] =>“一月” [2] =>“二月” [3] =>“三月” )
<? php(电话)
//用目录中的所有项填充数组
$句柄 = 打开目录 ( '.' );
同时( 假 !== ( $文件 = 读目录 ( $句柄 ))) {
$个文件 [] = $文件 ;
}
closedir(关闭目录) ( $句柄 );
?>
<? php(电话)
分类 ( $个文件 );
打印(r) ( $个文件 );
?>
<? php(电话)
$个水果 =数组( “水果” =>数组( “a” => “橙色” ,
“b” => “香蕉” ,
“c” => “苹果”
),
“数字” =>数组( 1 ,
2 ,
三 ,
4 ,
5 ,
6
),
“孔洞” =>数组( “第一个” ,
5 => “第二个” ,
“第三个”
)
);
//上面数组中寻址值的一些示例
回声 $个水果 [ “孔洞” ][ 5 ]; //打印“秒”
回声 $个水果 [ “水果” ][ “a” ]; //打印“橙色”
未设置( $个水果 [ “孔洞” ][ 0 ]); //删除“第一个”
//创建新的多维数组
$果汁 [ “苹果” ][ “绿色” ] = “很好” ;
?>
<? php(电话)
$arr1(美元) =数组( 2 , 三 );
$arr2(美元) = $arr1(美元) ;
$arr2(美元) [] = 4 ; //$arr2已更改,
//$arr1仍然是数组(2,3)
$arr3美元 = & $arr1(美元) ;
$arr3美元 [] = 4 ; //现在$arr1和$arr3是相同的
?>
请注意,当复制数组时,会保留其成员的“引用状态”( http://www.php.net/manual/en/language.references.whatdo.php ).
我认为您的第一个主要示例对新手来说是不必要的,非常混乱的:
$array=数组(
“foo”=>“bar”,
“bar”=>“foo”,
);
应将其拆下。
对于新手:
数组索引可以是任何字符串值,甚至可以是数组中的值。
数组[“foo”]的值为“bar”。
数组[“bar”]的值为“foo”
以下表达式均为真:
$array[“foo”]==“bar”
$array[“bar”]==“foo”
如果将NULL值转换为数组,则会得到一个空数组
这是一个有用的属性。 假设您有一个搜索函数,它在成功时返回一个值数组,如果没有找到,则返回NULL。
<? php$值 = 搜索 (...); ?>
现在要将该数组与另一个数组合并。 如果$values为NULL,我们该怎么办? 没问题:
<? php$组合 = 阵列_合并 ((数组) $值 , $其他 ); ?>
瞧。
请注意,如果在$_POST数组中使用字符串作为索引,则句点将转换为下划线:
<html>
<body>
<? php(电话)
打印 ( “帖子:” ); 打印(r) ( $_POST(发送) ); 打印 ( “<br/>” );
?>
<form method=“post”action=“ <? php(电话) 回声 $_服务器 [ “PHP_SELF” ]; ?> ">
<input type=“hidden”name=“Windows3.1”value=“Sux”>
<input type=“submit”value=“Click”/>
</form>
</body>
</html>
单击按钮后,页面显示以下内容:
POST:数组([Windows3_1]=>Sux)
请注意,即使通过序列化,数组值桶也是引用安全的。
<? php(电话)
$x美元 = '初始' ;
$测试 =数组( “A” =>& $x美元 , “B” =>& $x美元 );
$测试 = 序列化 ( 序列化 ( $测试 ));
$测试 [ “A” ]= “已更改” ;
回声 $测试 [ “B” ]; //输出“已更改”
?>
这在某些情况下可能很有用,例如在复杂结构中节省RAM。