<?php
//PHP中数组使用索引数组、关联数组、多维数组、排序,从数据库追加数据到数组中等调用示例
header('Content-Type:text/html;charset=utf-8');
//定义一个空数组的两种方法
echo '定义一个空数组的两种方法'.'<br>';
$cars=array();
$cars=[];
//索引数组,下标(键名)是从0开始的整数
echo "索引数组,下标(键名)是从0开始的整数"."<br>";
$cars=array("Volvo","BMW","Toyota");
echo $cars[2].'<br>'; // 输出单个数组元素,下标从0开始,这里值为Toyota
print_r($cars); //输出所有数组元素用Print_r函数
echo '<br>';
//用foreach循环遍历数组输出每个元素
foreach ($cars as $value) {
echo $value.',';
}
//关联数组,下标(键名)是字符串,键和值可以用单引号也可以用双引号,也可混用
echo "关联数组,下标(键名)是字符串"."<br>";
// $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age=array('Peter'=>'35','Ben'=>"37","Joe"=>"43");
echo $age['Ben'].'<br>';
print_r($age);
echo '<br>';
//二维索引数组
echo "二维索引数组"."<br>";
$cars2=array(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
echo $cars2[0][0].'<br>'; //输出二维数组中第0个元素中的第0号元素的值,索引数组下标从0开始,这里值为Volvo
echo $cars2[2][1].'<br>'; //输出二维数组中第2个元素中的第1号元素的值,索引数组下标从0开始,这里值为5
print_r($cars2);
echo '<br>';
//遍历二维索引数组输出每个元素方法一
echo '遍历二维索引数组输出每个元素方法一'.'<br>';
for ($i=0; $i < count($cars2); $i++){
for ($j=0; $j < count($cars2[$i]); $j++) {
// echo $cars2[$i][$j].'<br>';
echo $cars2[$i][$j].',';
}
}
//遍历二维索引数组输出每个元素方法二
echo '遍历二维索引数组输出每个元素方法二'.'<br>';
for ($i=0; $i < count($cars2); $i++){
foreach ($cars2[$i] as $value) {
echo $value.',';
}
}
//二维关联数组,下标(键名)是字符串, 键名是字符串至少有一个字符
echo "二维关联数组,下标(键名)是字符串, 键名是字符串至少有一个字符"."<br>";
$cars3=array(
"a"=>array("Volvo",22,18),
"b"=>array("BMW",15,13),
"c"=>array("Saab",5,2),
"d"=>array("Land Rover",17,15)
);
echo $cars3['a'][0].'<br>'; //输出二维数组键名为a的元素中第0个元素的值,这里值为Volvo
print_r($cars3);
echo '<br>';
echo count($cars3).'<br>'; //输出数组元素个数,二维数组的count函数只统计第一维数组元素个数,不统计第二维数组元素个数,这里值为4
//遍历二维关联数组
echo "遍历二维关联数组"."<br>";
foreach ($cars3 as $key => $value) {
// echo $key.':'.$value[0].'<br>';
// echo "Key: $key\n";
// echo "\$car3[".$key."]";
foreach ($value as $key2 => $value2) {
// echo "Key2: $key2, Value2: $value2\n";
echo "\$car3[".$key."][".$key2."] = $value2"."<br>";
}
}
// 数组排序
echo "数组排序"."<br>";
$cars4=array("Volvo","BMW","Toyota","Honda");
sort($cars4); // 升序排序,默认是升序,可以不写
rsort($cars4); // 降序排序
print_r($cars4);
echo '<br>';
// 遍历排序后的数组
foreach ($cars4 as $value) {
echo $value.'<br>';
}
foreach ($cars4 as $key => $value) {
echo "\$cars4[".$key."] = $value"."<br>";
}
//合并数组函数array_merge()
echo "合并数组函数array_merge()"."<br>";
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue","h"=>"yellow");
$a3=array_merge($a1,$a2);
print_r($a3);
echo '<br>';
//数组转换字符串函数implode()
echo "数组转换字符串函数implode()"."<br>";
$a4=array("a","b","c","d","e");
$str=implode(",",$a4);
echo $str.'<br>';
//字符串转换数组函数explode()
echo "字符串转换数组函数explode()"."<br>";
$str2="a,b,c,d,e";
$a5=explode(",",$str2);
print_r($a5);
echo '<br>';
//混合多维数组
//将数据库的数据插入数组
echo "将数据库的数据插入数组".'<br>';
require "../conn.php";
// 查询数据
$sql1 = "SELECT price_date, gl FROM gold_prices ORDER BY uptime LIMIT 10";
$result = $conn->query($sql1);
// $data是个多维混合数组,其第一个键labels是索引数组,第二个键datasets是关联数组,第二个键的第二个元素data又是一个索引数组
$data = [];
$data['labels'] = [];
$data['datasets'] = [[
'label' => '最近10天黄金价格',
'data' => [],
'backgroundColor' => 'rgba(255, 99, 132, 0.6)',
'borderColor' => 'rgba(255, 99, 132, 1)',
'borderWidth' => 1
]];
//将数数据库数据插入到数组中
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
array_push($data['labels'], $row['price_date']);
array_push($data['datasets'][0]['data'], $row['gl']);
}
}
//输出$data[labels]数据
echo "输出\$data[labels]数据".'<br>';
print_r($data['labels']);
echo '<br>';
//输出$data['datasets'][0]['data']
echo "输出\$data['datasets'][0]['data']"."<br>";
print_r($data['datasets'][0]['data']);
echo '<br>';
//输出$data所有数据
echo "输出\$data所有数据".'<br>';
print_r($data);
echo $data['datasets']['label'];
//=========================================================================
//关联数组,下标(键名)是字符串
echo "关联数组,下标(键名)是字符串"."<br>";
// $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age=array('Peter'=>'35','Ben'=>"37","Joe"=>"43");
echo $age['Ben'].'<br>';
echo $age['Joe'].'<br>';
print_r($age);
echo '<br>';
$data1 = [];
$data1['labels'] = ['aa'=>'aa','bb'=>'bb'];
//这里$data1['datasets'] = []单层括号时调用label键
$data1['datasets'] = [
'label' => '最近10天黄金价格',
'data' => [],
];
print_r($data1);
echo '<br>';
echo $data1['datasets']['label'].'<br>';
//这里$data1['datasets'] = [[]]双层括号时调用label键加[0]表第一个元素
$data1['datasets'] = [[
'label' => '最近10天黄金价格',
'data' => [],
]];
print_r($data1);
echo '<br>';
echo $data1['datasets'][0]['label'].'<br>';
//混合多维数组
//将数据库的数据插入数组
echo "将数据库的数据插入数组".'<br>';
require "../conn.php";
// 查询数据
$sql1 = "SELECT price_date, gl FROM gold_prices ORDER BY uptime LIMIT 10";
$result = $conn->query($sql1);
// $data是个多维混合数组,其第一个键labels是索引数组,第二个键datasets是关联数组,第二个键的第二个元素data又是一个索引数组
$data = [];
$data['labels'] = [];
$data['datasets'] = [[ //注:这里的$data['datasets'] = [['key'=>'..']];有双层括号,调用里面元素要加[0]
'label' => '最近10天黄金价格',
'data' => [],
'backgroundColor' => 'rgba(255, 99, 132, 0.6)',
'borderColor' => 'rgba(255, 99, 132, 1)',
'borderWidth' => 1
]];
//使用array_push()函数将数数据库数据插入到数组中
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
array_push($data['labels'], $row['price_date']);
array_push($data['datasets'][0]['data'], $row['gl']); //注:$data['datasets']=[['key'=>'val']]有双层括号,调用里面元素要加[0]
;
}
}
//输出$data[labels]数据
echo "输出\$data[labels]数据".'<br>';
print_r($data['labels']);
echo '<br>';
//输出$data['datasets'][0]['data']
echo "输出\$data['datasets'][0]['data']"."<br>";
print_r($data['datasets'][0]['data']);
echo '<br>';
//输出$data所有数据
echo "输出\$data所有数据".'<br>';
print_r($data);
?>