PHP數組函數基礎知識總結

墨辰丷
發布: 2023-03-29 14:22:01
原創
1261 人瀏覽過

這篇文章主要匯總了PHP數組函數最基礎的知識點,有興趣的小夥伴們可以參考一下

數組array是非常重要的資料類型。相對於其他的資料類型,它更像是一種結構,而這種結果構可以儲存一系列數值。陣列能夠在單一變數名稱中儲存許多值,並且能夠透過引用下標號來存取某個值。

在PHP 中,有三種陣列類型:
索引陣列- 帶有數字索引的陣列
關聯數組- 帶有指定鍵的陣列
多維數組- 包含一個或多個陣列的陣列

一、建立陣列

#array(key => value)

1、建立索引陣列

使用array()函數宣告陣列。 PHP屬於弱型別語言相對較靈活和方便,也可以直接是陣列的元素值value,不需要鍵值key,索引是自動分配的(索引從 0 開始)。
範例:

array("1" => "百度","2" => "阿里","3" => "腾讯");
或者是不使用键值:
array("百度","阿里","腾讯");
当然也可以写成:
$arr[0] = "百度";
$arr[1] = "阿里";
$arr[2] = "腾讯";
登入後複製

2、建立關聯陣列

關聯陣列和索引陣列類似,只是關聯數組不能夠像索引數組的鍵名那樣只能夠為數字,它可以是數值和字串以及混合形式,判斷一個數組是否為關聯數組的依據是:數組中的鍵名是否存在一個不是數字的。不是就是關聯。

array("李彥宏" => "百度","馬雲" => "阿里","馬化騰" => "騰訊");

#3、多維陣列

array(array(),array()) 二維陣列

取得陣列的長度- count() 函數

#
<?php
$arr = array("百度","阿里","腾讯");
echo count($arr);
?> //结果返回3(说明数组中有三个元素)
登入後複製

二、遍歷陣列

輸出陣列中元素的值。對於索引數組常用for、foreach;對於關聯數組常用foreach。使用print_r()函數列印循環後的結果,也可以用var_dump()。

1、遍歷索引數組

遍歷並輸出索引數組的所有值,可以使用for、 foreach(array_expression as value)、foreach(arrayexpressionaskey => $ value) 循環,如下:

使用for迴圈

<?php
$arr = array("百度","阿里","腾讯");
$arrlen = count($arr);//获取数组的长度
for ($i=0; $i <$arrlen ; $i++) { 
  $data[] = $arr[$i]; 
}
echo "<pre class="brush:php;toolbar:false">"; //换行显示
print_r($data);
登入後複製

列印結果顯示如下:
Array
(
    [0] => 百度
    [1] => 阿里
    [2] => 騰訊
)
使用foreach迴圈

##
<?php
$arr = array("百度","阿里","腾讯");
foreach ($arr as $value) {
  $data[] = $value;
}
echo "<pre class="brush:php;toolbar:false">"; //换行显示
print_r($data);//打印结果和上面一样
登入後複製

注意:data後面有一個陣列符號[],為什麼呢?

2、遍歷關聯數組

#遍歷並輸出關聯數組的所有值,可以使用foreach (array_expression as key=>value) 循環,如下:

<?php
$arr = array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯");
foreach ($arr as $key => $value) {
  $data[$key] = $value;
}
echo "<pre class="brush:php;toolbar:false">"; //换行显示
print_r($data);
登入後複製


列印結果顯示:

#
Array
(
  [李彦宏] => 百度
  [马云] => 阿里
  [马化腾] => 腾讯
)
登入後複製


##注意到沒?此時的data後面是[$key]?而不是[]

一個數字關聯數組一個是數字索引數組,

三、增加刪除數組的元素


在數組元素的尾部增加
array_push(array,value1,value2…) 函數在第一個參數的陣列尾部新增一個或多個元素(入堆疊),然後傳回新陣列的長度。

此函數等於多次呼叫 array[]=value。

<?php
$arr = array("百度","阿里","腾讯");
array_push($arr,"知乎","微博");
echo "<pre class="brush:php;toolbar:false">"; //换行显示
print_r($arr);
//打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [3] => 知乎
  [4] => 微博
)
登入後複製


在陣列元素的開始增加

array_unshift(array,value1,value2,value3…) 函數用於向陣列插入新元素。新數組的值將插入到數組的開頭。

<?php
$arr = array("百度","阿里","腾讯");
array_unshift($arr,"知乎","微博");
echo "<pre class="brush:php;toolbar:false">"; //换行显示
print_r($arr);
//打印结果显示:
Array
(
  [0] => 知乎
  [1] => 微博
  [2] => 百度
  [3] => 阿里
  [4] => 腾讯
)
登入後複製


在陣列元素的尾端刪除

array_pop(array) 函數刪除陣列中的最後一個元素。

<?php
$arr = array("百度","阿里","腾讯");
array_pop($arr);
echo "<pre class="brush:php;toolbar:false">"; //换行显示
print_r($arr);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
)
登入後複製


在陣列元素的開始刪除

array_shift(array) 函數刪除陣列中第一個元素 並且可以傳回已刪除元素的值。

<?php
$arr = array("百度","阿里","腾讯");
array_shift($arr);
echo "<pre class="brush:php;toolbar:false">"; //换行显示
print_r($arr);
打印结果显示:
Array
(
  [0] => 阿里
  [1] => 腾讯
)
登入後複製


移除陣列中重複的值

array_unique(array) 函數移除陣列中的重複的值,並傳回結果陣列。

<?php
$arr = array("百度","阿里","腾讯","百度","微博");
$data = array_unique($arr);
echo "<pre class="brush:php;toolbar:false">";
print_r($data);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [4] => 微博
)
登入後複製

#四、定位陣列元素


搜尋陣列中存在的值
in_array(search,array ,type)檢查數組中是否存在指定的值。

如果給定的值 search 存在於陣列 array 中則傳回 true。如果第三個參數設定為 true,函數只有在元素存在於陣列中且資料類型與給定值相同時才傳回 true。如果沒有在陣列中找到參數,函數會傳回 false。

<?php
$arr = array("百度","阿里","腾讯");
while (in_array("百度", $arr)) {
  echo "已经找到";
  break;
} //输出已经找到
登入後複製


在陣列中依照條件取出一段值: array_slice(array,start,length,preserve)
start 必要。數值。規定取出元素的開始位置。 0 = 第一個元素。
如果該值設定為正數,則從前往後開始取。

如果該值設定為負數,則從後向前取 start 絕對值。 -2 意指從陣列的倒數第二個元素開始。 ###

length 可选。数值。规定被返回数组的长度。
如果该值设置为整数,则返回该数量的元素。
如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。
如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。

<?php
$arr = array("百度","阿里","腾讯","知乎","微博");
$data = array_slice($arr,0,4);
echo "<pre class="brush:php;toolbar:false">";
print_r($data);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [3] => 知乎
)
登入後複製

array_splice(array,start,length,array) 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。

<?php
$arr1 = array("百度","阿里","腾讯");
$arr2 = array("知乎","微博");
array_splice($arr1,0,2,$arr2);
echo "<pre class="brush:php;toolbar:false">";
print_r($arr1);
打印结果显示:
Array
(
  [0] => 知乎
  [1] => 微博
  [2] => 腾讯
)
登入後複製

五、数组合并、拆分、比较

array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。

<?php
$arr1 = array("百度","阿里","腾讯");
$arr2 = array("知乎","微博");
$data = array_merge($arr1,$arr2);
echo "<pre class="brush:php;toolbar:false">";
print_r($data);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [3] => 知乎
  [4] => 微博
)
登入後複製

递归追加数组
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并到一起,形成一个联合的数组。两者之间的区别在于,当某个输入数组中的某个键已经存在于结果数组中时该函数会采取不同的处理方法。array_merge()会覆盖前面存在的键/值对,将其替换为当前输入数组中的键/值对,而array_merge_recursive()将两个值合并在一起,形成一个新的数组并以原有的键作为数组名。其形式为:

$arr= array(&#39;one&#39;=>&#39;C&#39;, &#39;one&#39;=>&#39;B&#39;); 
$arr1= array(&#39;three&#39;=>&#39;1&#39;, &#39;one&#39;=>&#39;2&#39;); 
$arr2= array_merge_recursive($arr, $arr1); 
echo "<pre class="brush:php;toolbar:false">";
print_r($arr2); 
打印结果显示:
Array
(
  [one] => Array
    (
      [0] => B
      [1] => 2
    )

  [three] => 1
)
登入後複製

合并两个数组
array_combine()函数会生成一个新数组,这个数组由一组提交的键和对应的值组成,其形式为:

$arr= array(&#39;A&#39;, &#39;B&#39;); 
$arr1= array(&#39;1&#39;, &#39;2&#39;); 
$arr2= array_combine($arr, $arr1);
echo "<pre class="brush:php;toolbar:false">";
print_r($arr2); 
打印结果显示:
Array
(
  [A] => 1
  [B] => 2
)
登入後複製

求数组的交集
array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:

$arr= array(&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;); 
$arr1= array(&#39;A&#39;, &#39;B&#39;, &#39;E&#39;); 
$arr2= array(&#39;A&#39;, &#39;F&#39;, &#39;D&#39;); 
$arr3= array_intersect($arr, $arr1, $arr2); 
echo "<pre class="brush:php;toolbar:false">";
print_r($arr3); 
打印结果显示:
Array
(
  [0] => A
)
登入後複製

注意:只有在两个元素有相同的数据类型时,array_intersect()才会认为它们相等。

求关联数组的交集
array_intersect_assoc()与array_intersect()基本相同,只不过它在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才被返回到结果数组中。其形式如下:

$arr= array(&#39;a&#39;=>&#39;A&#39;, &#39;b&#39;=>&#39;B&#39;, &#39;c&#39;=>&#39;C&#39;, &#39;d&#39;=>&#39;D&#39;); 
$arr1= array(&#39;a&#39;=>&#39;A&#39;, &#39;c&#39;=>&#39;B&#39;, &#39;E&#39;); 
$arr2= array(&#39;a&#39;=>&#39;A&#39;, &#39;b&#39;=>&#39;F&#39;, &#39;d&#39;=>&#39;B&#39;); 
$arr3= array_intersect_assoc($arr, $arr1, $arr2); 
echo "<pre class="brush:php;toolbar:false">";
print_r($arr3); 
打印结果显示:
Array
(
  [a] => A
)
登入後複製

求关联数组的差集
函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键,因此,只在第一个数组中出现而不在其他输入数组中出现的键/值对才会被返回到结果数组中。其形式如下:

$arr= array(&#39;a&#39;=>&#39;A&#39;, &#39;b&#39;=>&#39;B&#39;, &#39;c&#39;=>&#39;C&#39;, &#39;d&#39;=>&#39;D&#39;); 
$arr1= array(&#39;a&#39;=>&#39;A&#39;, &#39;b&#39;=>&#39;B&#39;, &#39;e&#39;=>&#39;E&#39;); 
$arr3= array_diff_assoc($arr, $arr1); 
echo "<pre class="brush:php;toolbar:false">";
print_r($arr3); 
打印结果显示:
Array
(
  [c] => C
  [d] => D
)
登入後複製

其他有用的数组函数
返回一组随机的键 array_rand()函数将返回数组中的一个或多个键。其形式为:

$arr= array(&#39;a&#39;=>&#39;A&#39;, &#39;b&#39;=>&#39;B&#39;, &#39;c&#39;=>&#39;C&#39;, &#39;d&#39;=>&#39;D&#39;); 
$arr1= array_rand($arr, 2); 
echo "<pre class="brush:php;toolbar:false">";
print_r($arr1);
打印结果显示:
 Array
(
  [0] => c
  [1] => d
) //每次刷新显示的结果都不一样
登入後複製

对数组中的值求和
array_sum()函数将数组内的所有值加在一起,返回最终的和,其形式如下:

$arr= array(&#39;A&#39;, 32, 12, &#39;B&#39;); 
$count= array_sum($arr); 
echo "<pre class="brush:php;toolbar:false">";
print_r($count);
登入後複製

打印结果显示:
44

如果数组中包含其他数据类型(例如字符串),这些值将被忽略。

划分数组
array_chunk()函数将数组分解为一个多维数组,这个多维数组由多个包含size个元素的数组所组成。其形式如下:

$arr= array(&#39;A&#39;, &#39;B&#39;, &#39;C&#39;, &#39;D&#39;); 
$arr1= array_chunk($arr, 2); 
echo "<pre class="brush:php;toolbar:false">";
print_r($arr1);
登入後複製

打印结果显示:

Array
(
  [0] => Array
    (
      [0] => A
      [1] => B
    )

  [1] => Array
    (
      [0] => C
      [1] => D
    )

)
登入後複製

处理数组时可调用函数有

array_filter(*array*,*callbackfunction*);
array_intersect_uassoc(*array1*,*array2*,*array3*...,*myfunction*)
array_intersect_ukey(*array1*,*array2*,*array3*...,*myfunction*)
array_reduce(*array*,*myfunction*,*initial*)
array_walk(*array*,*myfunction*,*userdata*...)
……
登入後複製

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php中实现进程锁与多进程的方法

PHP+MariaDB数据库操作基本技巧备忘总结

php实现操纵mysqli数据库的方法

以上是PHP數組函數基礎知識總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!