PHP配列の使用方法
この記事では、主に PHP 配列の使用方法を紹介します。これには、特定の参考値があります。今、それをみんなに共有します。必要な友人は、それを参照できます。
このチュートリアルでは、いくつかの実践的な例を使用します。 PHP で一般的に使用される配列関数をベスト プラクティスの方法でリストします。すべての PHP エンジニアは、それらの使用方法と、それらを組み合わせて、無駄がなく読みやすいコードを作成する方法を知っておく必要があります。
さらに、関連するサンプル コードのプレゼンテーションも提供しています。関連するリンクからダウンロードしてチームと共有し、より強力なチームを構築できます。
はじめに
配列のキーと値を扱ういくつかの基本的な配列関数から始めましょう。 array_combine() は、配列関数のメンバーとして、1 つの配列の値をキー名として使用し、別の配列の値をその値として使用して、新しい配列を作成するために使用されます。 array_values() 関数はインデックス付き配列の形式で配列内の値を返し、array_keys() は指定された配列のキー名を返し、array_flip() 関数の機能はキー値と配列内のキー名:
<?php $keys = ['sky', 'grass', 'orange']; $values = ['blue', 'green', 'orange']; $array = array_combine($keys, $values); print_r($array); // Array // ( // [sky] => blue // [grass] => green // [orange] => orange // )
code
list() 関数を簡略化します。正確に言うと、これは関数ではなく、配列に値を代入できる言語構造です。 1 回の操作で一連の変数に変換します。たとえば、
list() 関数の基本的な使用法を以下に示します。 <?php
print_r(array_keys($array));// ['sky', 'grass', 'orange']
print_r(array_values($array));// ['blue', 'green', 'orange']
print_r(array_flip($array));
// Array
// (
// [blue] => sky
// [green] => grass
// [orange] => orange
// )
または explode( ) このタイプの関数はより効果的です。一部の値を定義する必要がない場合は、いくつかのパラメーターの割り当てを直接スキップできます: <?php
// 定义数组
$array = ['a', 'b', 'c'];
// 不使用 list()
$a = $array[0];
$b = $array[1];
$c = $array[2];
// 使用 list() 函数
list($a, $b, $c) = $array;
も使用できますforeach トラバーサル、この使用法は、この言語構造をよりよく活用できます: $string = 'hello|wild|world';
list($hello, , $world) = explode('|', $string);
echo $hello, ' ', $world;
から始まり、連想配列では使用できません。ドキュメントを参照してください。 そして、extract() 関数を使用すると、連想配列を変数 (シンボル テーブル) にエクスポートできます。配列内の各要素について、そのキー名が作成する変数名として使用され、変数の値が対応する要素の値になります。
$arrays = [[1, 2], [3, 4], [5, 6]]; foreach ($arrays as list($a, $b)) { $c = $a + $b; echo $c, ', '; }
ユーザー データ (例:要求されたデータ)
extract()関数は安全な関数であるため、現時点では、EXTR_IF_EXISTS や EXTR_PREFIX_ALL などのより適切なフラグ タイプを使用することをお勧めします。
extract() この関数の逆演算は、compact() 関数です。この関数は、変数名によって連想配列を作成するために使用されます。 <?php
$array = [
'clothes' => 't-shirt',
'size' => 'medium',
'color' => 'blue',
];
extract($array);
echo $clothes, ' ', $size, ' ', $color;
PHP は、配列をフィルタリングするための素晴らしい関数 array_filter() を提供します。処理対象の配列を関数の第一引数として使用し、第二引数は無名関数とします。配列内の要素が検証に合格するようにしたい場合、匿名関数は
true を返し、それ以外の場合は false を返します。 <?php
$clothes = 't-shirt';
$size = 'medium';
$color = 'blue';
$array = compact('clothes', 'size', 'color');
print_r($array);
// Array
// (
// [clothes] => t-shirt
// [size] => medium
// [color] => blue
// )
または ARRAY_FILTER_USE_BOTH を 3 番目のパラメーターとして使用して、コールバック関数のパラメーターとして配列のキー値を使用するか、キー値とキー名の両方を使用するかを指定することもできます。 また、
array_filter() 関数でコールバック関数を定義して null 値を削除することもできます: <?php
$numbers = [20, -3, 50, -99, 55];
$positive = array_filter($numbers, function ($number) {
return $number > 0;
});
print_r($positive);// [0 => 20, 2 => 50, 4 => 55]
<?php $numbers = [-1, 0, 1]; $not_empty = array_filter($numbers); print_r($not_empty);// [0 => -1, 2 => 1]
array_column() 関数は、次のような多次元配列 (多次元) から指定された列の値を取得できます。 SQL データベースまたは CSV ファイルのインポート データから回答を取得する場合と同様です。配列と指定された列名を渡すだけです:
<?php $array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5]; $uniques = array_unique($array); print_r($uniques); print_r($array); // Array // ( // [0] => 1 // [4] => 2 // [7] => 3 // [8] => 4 // [9] => 5 // )
PHP 7 以降、
array_column はオブジェクトを含む配列のサポートを開始するため、より強力になり、配列モデルを扱うときに変更されます。より簡単: <?php
$array = [
['id' => 1, 'title' => 'tree'],
['id' => 2, 'title' => 'sun'],
['id' => 3, 'title' => 'cloud'],
];
$ids = array_column($array, 'id');
print_r($ids);// [1, 2, 3]
array_map() を使用すると、配列内の各要素に対してコールバック メソッドを実行できます。関数名または匿名関数を渡すことで、指定された配列に基づいて新しい配列を取得できます。
<?php $cinemas = Cinema::find()->all(); $cinema_ids = array_column($cinemas, 'id'); // php7 forever!
この関数については、配列のキー名とキー値を渡すことができないという噂もあります。
<?php $cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga']; $aliases = array_map('strtolower', $cities); print_r($aliases);// ['berlin', 'kyiv, 'amsterdam', 'riga'] $numbers = [1, -2, 3, -4, 5]; $squares = array_map(function ($number) { return $number ** 2; }, $numbers); print_r($squares);// [1, 4, 9, 16, 25]
しかし、この方法で行うのは本当に醜いです。代わりに array_walk() 関数を使用することをお勧めします。この関数は
array_map() と同様に動作しますが、動作原理はまったく異なります。まず、配列は参照によって渡されるため、array_walk() は新しい配列を作成せず、元の配列を直接変更します。そのため、ソース配列として、参照渡しメソッドを使用して配列の値をコールバック関数に渡し、配列のキー名を直接渡すだけです。 <?php
$model = ['id' => 7, 'name' => 'James'];
$res = array_map(function ($key, $value) {
return $key . ' is ' . $value;
}, array_keys($model), $model);
print_r($res);
// Array
// (
// [0] => id is 7
// [1] => name is James
// )
PHP の場合 配列をマージする最良の方法は、array_merge() 関数を使用することです。すべての配列オプションは 1 つの配列にマージされ、同じキー名の値は最後の値で上書きされます:
<?php $array1 = ['a' => 'a', 'b' => 'b', 'c' => 'c']; $array2 = ['a' => 'A', 'b' => 'B', 'D' => 'D']; $merge = array_merge($array1, $array2); print_r($merge); // Array // ( // [a] => A // [b] => B // [c] => c // [D] => D // )
译注:有关合并数组操作还有一个「+」号运算符,它和 array_merge() 函数的功能类似都可以完成合并数组运算,但是结果有所不同,可以查看 PHP 合并数组运算符 + 与 array_merge 函数 了解更多细节。
为了实现从数组中删除不在其他数组中的值(译注:计算差值),使用 array_diff()。还可以通过 array_intersect() 函数获取所有数组都存在的值(译注:获取交集)。接下来的示例演示它们的使用方法:
<?php $array1 = [1, 2, 3, 4]; $array2 = [3, 4, 5, 6]; $diff = array_diff($array1, $array2); $intersect = array_intersect($array1, $array2); print_r($diff); // 差集 [0 => 1, 1 => 2] print_r($intersect); //交集 [2 => 3, 3 => 4]
数组的数学运算
使用 array_sum() 对数组元素进行求和运算,array_product 对数组元素执行乘积运算,或者使用 array_reduce() 处理自定义运算规则:
<?php $numbers = [1, 2, 3, 4, 5]; print_r(array_sum($numbers));// 15 print_r(array_product($numbers));// 120 print_r(array_reduce($numbers, function ($carry, $item) { return $$carry ? $carry / $item : 1; }));// 0.0083 = 1/2/3/4/5
为了实现统计数组中值的出现次数,可以使用 array_count_values() 函数。它将返回一个新数组,新数组键名为待统计数组的值,新数组的值为待统计数组值的出现次数:
<?php $things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree']; $values = array_count_values($things); print_r($values); // Array // ( // [apple] => 2 // [banana] => 1 // [tree] => 3 // )
生成数组
需要以给定值生成固定长度的数组,可以使用 array_fill() 函数:
<?php $bind = array_fill(0, 5, '?'); print_r($bind);
根据范围创建数组,如小时或字母,可以使用 range() 函数:
<?php $letters = range('a', 'z'); print_r($letters); // ['a', 'b', ..., 'z'] $hours = range(0, 23); print_r($hours); // [0, 1, 2, ..., 23]
为了实现获取数组中的部分元素 - 比如,获取前三个元素 - 使用 array_slice() 函数:
<?php $numbers = range(1, 10); $top = array_slice($numbers, 0, 3); print_r($top);// [1, 2, 3]
排序数组
首先谨记 PHP 中有关排序的函数都是 引用传值 的,排序成功返回 true 排序失败返回 false。排序的基础函数是 sort() 函数,它执行排序后的结果不会保留原索引顺序。排序函数可以归类为以下几类:
a 保持索引关系进行排序
k 依据键名排序
r 对数组进行逆向排序
u 使用用户自定义排序规则排序
你可以从下表看到这些排序函数:
a | k | r | u | |
---|---|---|---|---|
a | asort | arsort | uasort | |
k | ksort | krsort | ||
r | arsort | krsort | rsort | |
u | uasort | usort |
数组函数的组合使用
数组处理的艺术是组合使用这些数组函数。这里我们通过 array_filter() 和 array_map() 函数仅需一行代码就可以完成空字符截取和去控制处理:
<?php $values = ['say', ' bye', '', ' to', ' spaces ', ' ']; $words = array_filter(array_map('trim', $values)); print_r($words);// ['say', 'bye', 'to', 'spaces']
依据模型数组创建 id 和 title 数据字典,我们可以结合使用 array_combine() 和 array_column() 函数:
<?php $models = [$model, $model, $model]; $id_to_title = array_combine( array_column($models, 'id'), array_column($models, 'title') ); print_r($id_to_title);
译注:提供一个 可运行的版本。
为了实现获取出现频率最高的数组元素,我们可以使用 array_count_values()、arsort() 和 array_slice() 这几个函数:
<?php $letters = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', 'd', 'd']; $values = array_count_values($letters); arsort($values); $top = array_slice($values, 0, 3); print_r($top);
还可以轻易的通过 array_sum() 和 array_map() 函数仅需数行就能完成计算订单的价格:
<?php $order = [ ['product_id' => 1, 'price' => 99, 'count' => 1], ['product_id' => 2, 'price' => 50, 'count' => 2], ['product_id' => 2, 'price' => 17, 'count' => 3], ]; $sum = array_sum(array_map(function ($product_row) { return $product_row['price'] * $product_row['count']; }, $order)); print_r($sum);// 250
总结
正如你所看到的那样,掌握主要的数组函数可以是我们的代码更精简且易于阅读。当然,PHP 提供了比列出来的要多得多的数组函数,并且还提供了额外参数及标识参数,但是我觉得本教程中已经涵盖了 PHP 开发者应该掌握的最基本的一些。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上がPHP配列の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
