定義と使用方法
- PHPバージョン
- 4+
array_values()関数は、指定された配列からすべての値(value)を抽出して新しいインデックス配列を返します。
返される配列は0から始まる連続した数値インデックスを持ち、元の配列のキー(key)は無視されます。
この関数は主に連想配列で使用され、
(1)元の配列のキーを無視して値だけを利用したい場合や、
(2)配列の順序を保ちながらすべての値を返す必要がある場合によく使用されます。
特徴
- 配列内のすべての値を取得します。
- 抽出された値で構成された新しい配列を作成します。
- この新しい配列では、元の配列のキー(key)は完全に破棄されます。
- 新しい配列には、
0、1、2…という連続した数値インデックスが自動的に再割り当てされます。 - 元の配列はそのまま保持されます。
基本の例
/** 連想配列 **/
$assoc = ['name' => 'Alice', 'age' => 25];
// 全ての値を取得します
$values = array_values($assoc);
var_dump($values);
// 出力: array(2) { [0]=> string(5) "Alice" [1]=> int(25) }
/** インデックス配列 **/
$indexed = ['apple', 'banana', 'cherry'];
// インデックス配列に対して array_values() を使用しても結果は同じです。
// すでに 0 から始まる連続したインデックスを持っているためです。
$values_indexed = array_values($indexed);
var_dump($values_indexed);
// 出力: array(3) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(6) "cherry" }
// 注意: array_values() は元の配列を変更しません。
上記の例から分かるように、array_values()関数は主に連想配列のキーを破棄して値だけを取得したい場合に使用され、すでに0から始まる連続した数値インデックスを持つ配列ではほとんど使用されません。
構文
array_values(array $array): array
引数
$array |
値(values)を抽出する配列です。 |
|---|
戻り値
配列のすべての値(values)を配列として抽出して返し、返された配列は数値でインデックス付けされます。
array_values()関数の返り値の例
/** 連想配列 **/
$array_1 = [
0 => 100,
'color' => 'green'
];
print_r(array_values($array_1));
// 出力: Array ( [0] => 100 [1] => green )
/** 多次元配列 **/
$array_2 = [
'color' => ['red', 'green', 'blue'],
'size' => ['small', 'medium', 'large']
];
print_r(array_values($array_2));
/*
出力:
Array
(
[0] => Array ( [0] => red [1] => green [2] => blue )
[1] => Array ( [0] => small [1] => medium [2] => large )
)
*/
/** 空の配列 **/
$array_3 = [];
print_r(array_values($array_3));
// 出力: Array ( )
活用例
次のような場合に便利に使用できます。
- 配列のキーを無視して値だけを使用する場合
- 配列の順序を保ちながらすべての値を返す必要がある場合
元の配列のキーを無視して値だけを使用する
仮想状況:オンラインショップで注文情報を処理するPHPスクリプトを作成する必要があります。各注文は連想配列として保存され、次のような形式になります。
// 注文情報
$order1 = [
'order_id' => 101,
'customer_name' => '山田太郎',
'total_amount' => 5000
];
$order2 = [
'order_id' => 102,
'customer_name' => '佐藤一郎',
'total_amount' => 7500
];
// その他の注文情報...
この注文情報を処理する際に、array_values()関数を使用してみます。以下は各注文情報を順序付き配列に変換し、合計注文金額を計算する例のコードです。
// 注文情報
$order1 = [
'order_id' => 101,
'customer_name' => '山田太郎',
'total_amount' => 5000
];
$order2 = [
'order_id' => 102,
'customer_name' => "佐藤一郎",
'total_amount' => 7500
];
// 注文情報を配列に保存
$orders = array($order1, $order2);
// 注文情報の合計金額を計算
$totalAmount = 0;
foreach ($orders as $order) {
// array_values() 関数を使用して値だけを抽出
$orderValues = array_values($order);
// 順番に並んだ配列の注文金額のインデックスを使用
$totalAmount += $orderValues[2];
}
// 合計注文金額を出力
echo '合計注文金額: ' . number_format($totalAmount) . '円'; // 出力: '合計注文金額: 12,500円'
このコードでは、array_values()関数を使用して注文情報から値を抽出し、注文金額は配列内の決まった位置(インデックス2)を使用して取得し、累積しています。これは注文情報を処理する際に、元の配列のキーを無視して値だけを使用する例です。
このコードは、PHPを使用して仮想の注文情報を処理し、注文情報から合計注文金額を計算する簡単なプログラムです。コードは次の手順に分かれています。
- 注文情報の定義:注文情報は、注文番号、顧客名、注文合計金額を含む連想配列として定義されます。
- 注文情報配列の作成:すべての注文情報は配列に保存され、この配列は
$ordersという名前で定義されます。 - 合計注文金額の計算:
foreach()ループを使用して注文情報配列を繰り返し処理し、array_values()関数を使用して各注文の値を抽出します。その後、注文合計金額を加算して合計注文金額を計算します。 - 結果の出力:計算された合計注文金額は画面に表示され、
number_format()関数を使用して千単位でフォーマットされます。
配列の順序を維持しながらすべての値を返す必要がある場合
仮想状況:会員情報を保存する連想配列があり、配列の順序を維持しながら会員名を出力する例のコードをarray_values()関数を使用して示します。
// 会員情報を保存する連想配列の作成
$members = [
101 => '山田太郎',
102 => "佐藤一郎",
103 => "鈴木花子"
];
// 配列の順序を維持しながら会員名を出力
$memberNames = array_values($members);
foreach ($memberNames as $name) {
echo '会員名: ' . $name . '<br>';
}
/*
出力:
会員名: 山田太郎
会員名: 佐藤一郎
会員名: 鈴木花子
*/
上記の二つの例は、array_values()関数を使用する例を示すための仮想的な状況です。array_values()関数を使用するかどうかは、具体的な状況に応じて判断する必要があります。