ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PHP 访问数组中的元素

2021-10-26 22:32:16  阅读:126  来源: 互联网

标签:函数 元素 echo 访问 数组 each ble PHP


PHP 访问数组中的元素

1. 访问数组中的元素

数组元素和访问方法与字符串中单个字符的访问访问方法一样:

<?php
$ble=array("苹果"=>"5.68","奶油面包"=>"3","酸奶"=>"20");
$bles=array("豆奶","麦片","酸奶","苹果","8"=>"面包");
$fods=$ble['奶油面包'];     //$fods 的值为"5.68"
$cc=$bles['8'];           //$cc 的值为"面包"
echo $fods."\r\n";
echo $cc;
?>

执行结果如下所示:
2021-10-26

访问素组需要先写变量名,后跟上一对方括号,方括号里面是元素的索引
若需要访问关联数组的元素,则不是使用数值索引,而是使用字符串索引:

<?php
$ble=array("苹果"=>"5.68","奶油面包"=>"3","酸奶"=>"20");
$bles=array("豆奶","麦片","酸奶","苹果","9"=>"面包");
$fods=$ble['奶油面包'];     //$fods 的值为"5.68"
$cc=8;           
echo $fods."\r\n";
echo $bles[$cc+1];  //显示数组中的“面包”
?>

执行结果如下所示:
2021-10-26

数值变量名后面的方括号中的内容不一定必须为常量,可以是任何表达式,只要表达式的值是一个合适的整数或字符串就行:

2. 改变元素内容

不仅能访问数组元素的值,还能用同样的方法修改数组元素的值;
把数组元素看成单独的变量,就能随意创建、读取、写入它的值
例子:
将数组中的第三个元素的值从“烧鸡”换成“烧鸭”:

<?php
$ble=array("酸菜鱼","白切鸡","烧鸡","卤肉");
$ble[2]="烧鸭";
echo $ble[2];
?>

增加数组元素的两种方式:

<?php
$ble=array("酸菜鱼","白切鸡","烧鸡","卤肉");
$ble[4]="糖醋排骨";     //第一种方括号+索引
echo $ble[4];
$ble[]="菠萝鸡";       //第二种方括号
echo $ble[5];
?>

执行结果如下所示:
2021-10-26

还可以用方括号的方式,创建一个全新的数组:
例子 :

<?php
//用array创建一个数组
$ble1=array("酸菜鱼","烧鸡","卤肉","菠萝鸡");
//用[]创建一个相同的数组
$ble2[0]="酸菜鱼2";
$ble2[1]="烧鸡2";
$ble2[2]="卤肉2";
$ble2[3]="菠萝鸡2";
//用空[]创建一个相同的数组
$ble3[]="酸菜鱼3";
$ble3[]="烧鸡3";
$ble3[]="卤肉3";
$ble3[]="菠萝鸡3";
var_dump($ble1);
var_dump($ble2);
var_dump($ble3);
?>

执行结果如下所示:
2021-10-26

与普通变量相同,必须先初始化数组
如果上面的 $ble2 和 $ble3 数组变量已经存在,并且包含其他元素,那么执行代码后,数组可能就会包含不止上述赋值的四个元素;
若无法确定一个数组是否已创建,最好的是在创建数组之前,先对数组变量进行初始化,即便当前还不需要创建数组元素;
初始化数组只需用 array()构造函数
以空的列表为参数即可:

$ble=array()

在创建一个没有任何元素的数组(空数组)之后,还能给它添加元素:

$ble3[]="酸菜鱼3";
$ble3[]="烧鸡3";
$ble3[]="卤肉3";
$ble3[]="菠萝鸡3";

用方括号[]还能给关联数组添加元素或修改元素的值;
关联数组的两种赋值方式:

<?php
//使用array()构造函数创建一个关联数组
$ble=array("title"=>"php",
            "author"=>"王某",
            "pubYear"=>2019);
//使用数组名加[]创建一个相同的关联数组
$ble=array();
$ble["title"]="php";
$ble["author"]="王某";
$ble["pubYear"]=2019;
var_dump($ble);
var_dump($ble);
?>

执行结果如下所示:
2021-10-26

修改关联数组的元素值与修改索引数组的元素值一样,具体方法如下:

$ble["title"]="python";
$ble["pubYear"]=2021;

3. 用 print_r() 函数输出整个数组

普通变量,用print() 和 echo()函数输出,print_r()函数可输出数组的全部内容,用于调试;

print_r($ble);

例子 :
创建一个索引数组和关联数组,再使用print_r()函数输出,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>输出数组</title>
    <link rel="stylesheet" type="text/css" href="common.css" />
</head>
<body>
<h1>用print_r()输出数组</h1>
<?php
    header("content-type:text/html;charset=utf-8");
    $ble=array("酸菜鱼","烧鸡","卤肉","生煎","汤");
    $ble2=array("title"=>'PHP',
                "author"=>"王某",
                "pubYear"=>2019);
    echo '<h2>$ble:</h2><pre>';
    print_r($ble);
    echo '</pre><h2>$ble2:</h2><pre>';
    print_r($ble2);
    echo "</pre>";
?>
</body>
</html>

执行结果如下所示:
2021-10-26

print_r()函数先输出传递给它的变量的类型,即 array(),再以key=>value的形式输出数组的全部元素;
脚本用<pre> 和 </pre>标签控制print_r()的输出格式,我们看到的就是格式化之后的结果;若没有这些标签,结果将以一行显示在网页上;
如要把print_r()的输出结果储存到一个字符串中,而不是输出到浏览器中,则需要给它传递第二个参数TRUE;

$arrayStructure=print_r($array,true);
echo $arrayStructure;

array_slice()函数读取数组中的连续几个元素
若想一次性访问多个元素,可使用 array_sliece()函数,他可以从一组数组中读取一组元素;
使用 array_slice()函数时,要把数组变量传递给它,之后第一个元素的位置(从0开始),后面再跟一个数值,表示要读取元素的个数;
函数可返回一个数自,该数组的元素就是原数组的部分元素;
注意: array_slice()不保留原数组的键值,而是会在新数组中从0开始重新设置索引;
关联数组并没有数值索引,但PHP会记住每个元素在关联数组中的顺序,所以,可利用arrat_silce()函数读取关联数组的部分元素;

4. 统计数组中元素的个数

count()函数可统计数组元素的个数;
只需把一个数组传递给count()函数,就得到数组的元素个数是多少;

<?php
    $ble=array("酸奶","高钙奶","低脂奶","豆奶","脱脂奶");
    $bles=array("title"=>"php",
                "author"=>"王某",
                "pubYear"=>2019);
    echo count($ble)."<br>";        //输出"5"
    echo count($bles);              //输出"3"
?>

执行结果如下所示:
2021-10-24
用conut()函数还能读取索引数组的最后一个元素;
例子 :

<?php
    $ble=array("酸奶","高钙奶","低脂奶","豆奶","脱脂奶");
    $bbc=count($ble)-1;
    echo $ble[$bbc];
?>

执行结果如下所示:
2021-10-25
一个包含了五个元素的索引数组,它的最后一个元素索引不一定是4,如下面例子:

<?php
$ble=array(0=>"酸奶",1=>"高钙奶",2=>"低脂奶",3=>"豆奶",6=>"脱脂奶");
$bbc=count($ble)-1;
echo $ble[$bbc];
?>

执行结果如下所示:
2021-10-24
上面例子中数组使用的是数字键,表示它是一个 索引数组,但键值对不连续,也可以看成一个使用数值键的 关联数组PHP内部不区分索引数组和关联数组,所以有可能创建一个非连续性的索引数组;
所以在上面的例子这种PHP会输出 Undefined Offset(即“没有定义的偏移”),因此用 echo语句输出得到一个空字符串

5. 逐个访问数组中的元素

用PHP语言创建数组时,PHP会记住元素的创建顺序,并报存一个内部指针,指向数组中的元素;指针初始化时会指向第一个创建的数组元素,但可以任意地向前或向后移动这个指针;
下表中的函数可操作这个指针并访问指向的元素:
2021-10-25
每个函数都只有一个参数,即数组,返回的是找到的元素的值或索引;若找不到返回FALSE;
例子 :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>访问数组</title>
    <link rel="stylesheet" type="text/css" href="common.css" />
</head>
<body>
<h2>访问数组</h2>
<?php
header("content-type:text/html;charset=utf-8");
$ble=array("酸菜鱼","烧鸡","卤肉","生煎","羊肉汤");
echo "<p>作者组:".print_r($ble).".</p>";
echo "<p>当前数组元素是:".current($ble).".</p>";
echo "<p>下一个元素是:".next($ble).".</p>";
echo "<P>当前元素的键是:".key($ble).".</P>";
echo "<p>下一个元素是:".next($ble).".</p>";
echo "<p>前一个元素是:".prev($ble).".</p>";
echo "<p>第一个元素是:".reset($ble).".</p>";
echo "<p>最后一个元素是:".end($ble).".</p>";
echo "<p>前一个元素是:".prev($ble).",</p>";

?>
</body>
</html>

执行结果如下所示:
2021-10-26
注意在这个脚本中,这些函数是如何向前或向后移动数组指针的(current() 和key() 函数式例外情况,这两个函数只返回当前元素的键或值,指针没有移动);

6. each() 函数

each() 函数,返回数组当前的元素,将指针移动到下一个元素;each() 函数返回的不是一个值,而是一个包含了四个元素的数组,其中包含了键和值;
若找不到某个元素——可能是指针到了末尾,或是空数组,则 each()返回FALSE;
所以,用each() 很容易判断,读取的值是否为FALSE的元素,会返回一个包含了四个元素的数组,若找不到元素,返回FALSE;
each() 函数数组返回的四元数组说明了PHP数组的灵活性,因为它既包含数值型元素,也包含了字符串元素;
如下表所示:
2021-10-26
用0索引或"key"访问当前元素的键,用1或"value"访问当前元素的值;
例子 :

<?php
    $ble=array(0=>"酸奶",1=>"高钙奶",2=>"低脂奶",3=>"豆奶",6=>"脱脂奶");
    $bbc=each($ble);
    echo "key:".$bbc[0]."<br>";
    echo "value:".$bbc[1]."<br>";
    echo "key:".$bbc["key"]."<br>";
    echo "value:".$bbc["value"]."<br>";
?>

执行结果如下所示:
2021-10-
用each()函数读取一个值为FALSE的数组元素:

<?php
$ble=array(false);
$bbc=each($ble);
echo "key:".$bbc[0]."\r\n";
echo "value:".$bbc[1]."\r\n";
echo "key:".$bbc["key"]."\r\n";
echo "value:".$bbc["value"]."\r\n";
?>

执行结果如下所示:
2021-10-26
因为each()函数会返回当前数组元素,同时把数组指针向前移动一个位置,可在 while 循环中用它访问数组的每个元素;
例子 :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> 用each()返回当前数组元素 </title>
    <link rel="stylesheet" type="text/css" href="common.css" />
</head>
<body>
<h2> 用each()返回当前数组元素 </h2>
<?php
header("content-type:text/html;charset=utf-8");
$ble=array("酸菜鱼","烧鸡","卤肉","生煎","羊肉汤");
while ($bbc=each($ble))
{
    echo "<dt>$bbc[0]</dt>";
    echo "<dt>$bbc[1]</dt>";
}

?>
</body>
</html>

执行结果如下所示:
2021-10-26
用each()返回的是数组的四个元素(它的赋值运算结果为TRUE),这个while 循环就会一直执行下去;当到达数组末尾时,each() 函数就会返回FALSE,至此循环结束;

结束语

若这篇文章有帮到你,给个赞,收个藏,欢迎大家留言评论;
若文章有什么错误,欢迎大家指教。

标签:函数,元素,echo,访问,数组,each,ble,PHP
来源: https://blog.csdn.net/weixin_43960383/article/details/120943528

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有