検索

PHP学習メモ4

PHP配列操作(結合、分割、追加、検索、削除など)

    ブログ分類:
  • Php / Pear / Mysql / Node.js

1. 配列を結合します

array_merge () 関数は配列を結合し、結合された配列を返します。結果の配列は、最初の入力配列パラメーターで始まり、後続の配列パラメーターが出現する順序で順次追加されます。その形式は次のとおりです:

array array_merge (array array1 array2…,arrayN)

この関数は 1 つ以上の配列のセルを結合し、1 つの配列の値が前の配列に追加されます。結果の配列を返します。

入力配列に同じ文字列キー名がある場合、キー名の後の値で前の値が上書きされます。ただし、配列に数値キーが含まれている場合、後続の値は元の値を上書きせず、追加されます。

配列のみが指定され、その配列が数値的にインデックス付けされている場合、キー名は連続して再インデックス付けされます。

<?php$fruits = array("apple","banana","pear");$numbered = array("1","2","3");$cards = array_merge($fruits, $numbered);print_r($cards);// output// Array ( [0] => apple [1] => banana [2] => pear [3] => 1 [4] => 2 [5] => 3 )?>

2. 配列の追加

array_merge_recursive() 関数は、2 つ以上の配列を結合して和集合配列を形成できる array_merge() と同じです。 。 2 つの違いは、入力配列内のキーが結果配列に既に存在する場合、関数は異なる方法で処理することです。 array_merge() は、以前に存在していたキー/値のペアを上書きし、現在の入力配列のキー/値のペアに置き換えます。一方、array_merge_recursive() は、2 つの値をマージして、元のキーを持つ新しい配列を形成します。配列名。配列を再帰的に追加する配列マージの形式もあります。その形式は次のとおりです:

array array_merge_recursive(array array1,array array2[…,array arrayN])

プログラムの例は次のとおりです:

<?php$fruit1 = array("apple" => "red", "banana" => "yellow");$fruit2 = array("pear" => "yellow", "apple" => "green");$result = array_merge_recursive($fruit1, $fruit2);print_r($result);// output// Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear] => yellow )?>

キーのリンゴは配列を指します。これは 2 つのカラー値のインデックス付き配列で構成されます。

3. 配列の接続

array_combine() 関数は、送信されたキーと対応する値のセットで構成される新しい配列を取得します。その形式は次のとおりです:

array array_combine(array keys,array values)

2 つの入力配列は同じサイズである必要があり、空にすることはできないことに注意してください。例は次のとおりです。

<?php$name = array("apple", "banana", "orange");$color = array("red", "yellow", "orange");$fruit = array_combine($name, $color);print_r($fruit);// output// Array ( [apple] => red [banana] => yellow [orange] => orange )?>

4. 配列の分割 array_slice()

array_slice() 関数は、キーから始まる配列の一部を返します。 offset と offset+ で終了 長さの位置が終了します。その形式:

array array_slice (array array, int offset[,int length])

offset が正の値の場合、配列の先頭からのオフセット位置から分割が開始されます。 offset が負の値の場合、分割は から開始されます。配列の末尾からのオフセット位置。オフセット位置から開始します。オプションの長さパラメータを省略した場合、分割はオフセットから開始され、配列の最後の要素まで進みます。長さが指定され、正の場合、配列の先頭からのオフセット + 長さの位置で終了します。逆に、長さが指定されていて負の場合、配列の先頭から count(input_array)-|length| で終了します。例を考えてみましょう:

<?php$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");$subset = array_slice($fruits, 3);print_r($subset);// output// Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon )?>

次に、低い方の負の長さを使用します:

<?php$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");$subset = array_slice($fruits, 2, -2);print_r($subset);// output// Array ( [0] => Orange [1] => Pear [2] => Grape )?>

5. 配列の結合 array_splice()

array_splice() 関数は、配列内の offset から始まり offset+length で終わるすべての要素を削除し、削除された要素を配列の形式で返します。その形式は次のとおりです。

array array_splice ( array array , int offset[,length[,array replacement]]) 

offset が正の値の場合、結合は配列の先頭からのオフセット位置から開始されます。 offset が負の値の場合、結合は配列の先頭から始まります。配列の末尾からのオフセット位置から開始されます。オプションの長さパラメータを省略した場合、オフセット位置から始まり配列の末尾で終わるすべての要素が削除されます。長さが指定されており、それが正の場合、結合は配列の先頭からのオフセット + 長さの位置で終了します。逆に、length が指定されていて負の場合、共用体は配列の先頭から count(input_array)-length だけ終了します。例は次のとおりです。

<?php$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");$subset = array_splice($fruits, 4);print_r($fruits);print_r($subset);// output// Array ( [0] => Apple [1] => Banana [2] => Orange [3] => Pear ) // Array ( [0] => Grape [1] => Lemon [2] => Watermelon )?>

オプションのパラメーター置換を使用して、ターゲット部分を置換する配列を指定できます。例は次のとおりです。

<?php$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");$subset = array_splice($fruits, 2, -1, array("Green Apple", "Red Apple"));print_r($fruits);print_r($subset);// output// Array ( [0] => Apple [1] => Banana [2] => Green Apple [3] => Red Apple [4] => Watermelon ) // Array ( [0] => Orange [1] => Pear [2] => Grape [3] => Lemon )?>

この関数の使用方法はプログラムから明確にわかります。

6. 配列の交差 array_intersect()

array_intersect() 関数は、最初の配列に出現し、他のすべての入力配列に出現する値のみで構成されるキーを保持する配列。その形式は次のとおりです:

array array_intersect(array array1,array array2[,arrayN…])

次の例は、$fruit1 配列に表示され、$fruit2 と $fruit3 にも表示されるすべてのフルーツを返します:

<?php$fruit1 = array("Apple","Banana","Orange");$fruit2 = array("Pear","Apple","Grape");$fruit3 = array("Watermelon","Orange","Apple");$intersection = array_intersect($fruit1, $fruit2, $fruit3);print_r($intersection);// output// Array ( [0] => Apple )?>

array_intersect() 関数は、2 つの要素が等しく、同じデータ型を持つ場合にのみ、2 つの要素を同じとみなします。

7. 連想配列の交差 array_intersect_assoc()

関数 array_intersect_assoc() は、配列のキーも考慮する点を除いて、基本的に array_intersect() と同じです。比較の配列。したがって、最初の配列に出現し、他のすべての入力配列にも出現するキーと値のペアのみが結果配列に返されます。

の形式は次のとおりです:

array array_intersect_assoc(array array1,array array2[,arrayN…])

下面的例子返回了出现在$fruit1数组中,也同时出现在$fruit2与$fruit3中的所有键/值对:

<?php$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);print_r($intersection);// output// Array ( [red] => Apple )?>

8. 数组的差集 array_diff()

函数array_diff()返回出现在第一个数组中但其他输入数组中没有的值。这个功能与array_intersect()相反。

array array_diff(array array1,array array2[,arrayN…])

实例如下:

<?php$fruit1 = array("Apple","Banana","Orange");$fruit2 = array("Pear","Apple","Grape");$fruit3 = array("Watermelon","Orange","Apple");$intersection = array_diff($fruit1, $fruit2, $fruit3);print_r($intersection);// output// Array ( [1] => Banana )?>

9. 关联数组的差集 array_diff_assoc()

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

array array_diff_assoc(array array1,array array2[,arrayN…])

下面的例子只返回了[yellow] => Banana,因为这个特殊的键/值对出现在$fruit1中,而在$fruit2和$fruit3中都不存在。

<?php$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3);print_r($intersection);// output// Array ( [yellow] => Banana )?>

使用数组的过程中经常要遍历数组。通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。

10. 获取当前数组键 key()

key()函数返回input_array中当前指针所在位置的键。其形式如下:

mixed key(array array)

下面的例子通过迭代处理数组并移动指针来输出$fruits数组的键:

$fruits = array("apple"=>"red", "banana"=>"yellow");while ($key = key($fruits)) { 	printf("%s <br />", $key); 	next($fruits);}// apple // banana

注意,每次调用key()时不会移动指针。为此需要使用next()函数,这个函数的唯一作用就是完成推进指针的任务。

11. 获取当前数组值 current()

current()函数返回数组中当前指针所在位置的数组值。其形式如下:

mixed current(array array)

下面修改前面的例子,这一次我们要获取数组值:

$fruits = array("apple"=>"red", "banana"=>"yellow");while ($fruit = current($fruits)) { 	printf("%s <br />", $fruit); 	next($fruits);}// red // yellow 

12. 获取当前数组键和值 each()

each()函数返回input_array的当前键/值对,并将指针推进一个位置。其形式如下:

array each(array array)

返回的数组包含四个键,键0和key包含键名,而键1和value包含相应的数据。如果执行each()前指针位于数组末尾,则返回false。

$fruits = array("apple", "banana", "orange", "pear");print_r ( each($fruits) );// Array ( [1] => apple [value] => apple [0] => 0 [key] => 0 )

each() 经常和 list() 结合使用来遍历数组。本例与上例类似,不过循环输出了整个数组:

$fruits = array("apple", "banana", "orange", "pear");reset($fruits);while (list($key, $val) = each($fruits)) 	{ 		echo "$key => $val<br />"; 	}// 0 => apple// 1 => banana// 2 => orange// 3 => pear

因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上例中如果我们在循环内部将 $fruits 赋给了另一个变量的话将会导致无限循环。

这就完成了数组的遍历。

查找、筛选与搜索数组元素是数组操作的一些常见功能。下面来介绍一下几个相关的函数。

13. in_array()函数

in_array()函数在一个数组汇总搜索一个特定值,如果找到这个值返回true,否则返回false。其形式如下:

boolean in_array(mixed needle,array haystack[,boolean strict]);

来看下面的例子,查找变量apple是否已经在数组中,如果在,则输出一段信息:

$fruit = "apple"; $fruits = array("apple","banana","orange","pear"); if( in_array($fruit,$fruits) )  	echo "$fruit 已经在数组中";

第三个参数可选,它强制in_array()在搜索时考虑类型。

14. array_key_exists()函数

如果在一个数组中找到一个指定的键,函数array_key_exists()返回true,否则返回false。其形式如下:

boolean array_key_exists(mixed key,array array);

下面的例子将在数组键中搜索apple,如果找到,将输出这个水果的颜色:

$fruit["apple"] = "red";$fruit["banana"] = "yellow";$fruit["pear"] = "green";if(array_key_exists("apple", $fruit)){	printf("apple&#39;s color is %s",$fruit["apple"]);}//apple&#39;s color is red

15. array_search()函数

array_search()函数在一个数组中搜索一个指定的值,如果找到则返回相应的键,否则返回false。其形式如下:

mixed array_search(mixed needle,array haystack[,boolean strict])

下面的例子在$fruits中搜索一个特定的日期(December 7),如果找到,则返回相应州的有关信息:

$fruits["apple"] = "red";$fruits["banana"] = "yellow";$fruits["watermelon"]="green";$founded = array_search("green", $fruits);if($founded) 	printf("%s was founded on %s.",$founded, $fruits[$founded]);//watermelon was founded on green.

16. array_keys()函数

array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。其形式如下:

array array_keys(array array[,mixed search_value])

如果包含可选参数search_value,则只会返回与该值匹配的键。下面的例子将输出$fruit数组中找到的所有数组:

$fruits["apple"] = "red";$fruits["banana"] = "yellow";$fruits["watermelon"]="green";$keys = array_keys($fruits);print_r($keys);//Array ( [0] => apple [1] => banana [2] => watermelon )

17. array_values()函数

array_values()函数返回一个数组中的所有值,并自动为返回的数组提供数值索引。其形式如下:

array array_values(array array)

下面的例子将获取$fruits中找到的各元素的值:

$fruits["apple"] = "red";$fruits["banana"] = "yellow";$fruits["watermelon"]="green";$values = array_values($fruits);print_r($values);//Array ( [0] => red [1] => yellow [2] => green )

有时候我们需要扩展一个数组,或者删掉数组的一部分,PHP为扩展和缩小数组提供了一些函数。对于那些希望模仿各种队列实现(FIFO、LIFO)的程序员来说,这些函数可以提供便利。顾名思义,从这些函数的函数名(push、pop、shift和unshift)就清楚地反映出其作用。

PS:传统的队列是一种数据结构,删除元素与加入元素的顺序相同,就称为先进先出,或FIFO。相反,栈是另外一种数据结构,其中删除元素的顺序与加入时的顺序相反,这成为后进先出,或LIFO。

18. 在数组头添加元素

array_unshift()函数在数组头添加元素。所有己有的数值键都会相应地修改,以反映其在数组中的新位置,但是关联键不受影响。其形式如下:

int array_unshift(array array,mixed variable[,mixed variable])

下面这个例子在$fruits数组前面添加了两种水果:

$fruits = array("apple","banana");array_unshift($fruits,"orange","pear")// $fruits = array("orange","pear","apple","banana");

19. 在数组尾添加元素

array_push()函数的返回值是int型,是压入数据后数组中元素的个数,可以为此函数传递多个变量作为参数,同时向数组压入多个变量。其形式为:

(array array,mixed variable [,mixed variable...])

下面这个例子在$fruits数组中又添加了两个水果:

$fruits = array("apple","banana");array_push($fruits,"orange","pear")//$fruits = array("apple","banana","orange","pear")

20. 从数组头删除值

array_shift()函数删除并返回数组中找到的元素。其结果是,如果使用的是数值健,则所有相应的值都会下移,而使用关联键的数组不受影响。其形式为

mixed array_shift(array array)

下面的例子删除了$fruits数组中的第一个元素apple:

$fruits = array("apple","banana","orange","pear");$fruit = array_shift($fruits);// $fruits = array("banana","orange","pear")// $fruit = "apple";

21. 从数组尾删除元素

array_pop()函数删除并返回数组的最后一个元素。其形式为:

mixed array_pop(aray target_array);

下面的例子从$states数组删除了最后的一个州:

$fruits = array("apple","banana","orange","pear");$fruit = array_pop($fruits);//$fruits = array("apple","banana","orange");//$fruit = "pear";

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター