PHPのarray_combine()関数を使用しキーと値の2つの配列を結合し新しい配列を形成する

PHPのarray_combine()関数を使用しキーと値の2つの配列を結合し新しい配列を形成してみます。

array_combine()関数は、キーのみの配列と、値(要素)のみの配列の値(要素)を使用し、新しい配列を作成することができます。新しい配列は、連想配列として形成されます。なお、両方の配列には同じ数の要素が必要となります。

array_combine()関数の戻り値は、新しく形成された配列を返します。要素の数が一致しない場合はFalse(偽)を返します。

■基本的な構文

array_combine(keys, values)

keysは、 キーのみの配列を指定します。

valuesは、値(要素)のみの配列を指定します。

■環境

・Windows10

・XAMPP 8.0.6

・PHP Version 8.0.6

■array_combine()関数を使用しキーと値の2つの配列から新しい配列を形成する

では、PHPのarray_combine()関数を使用しキーと値の2つの配列から新しい配列を形成するスクリプトを書いていきます。

■コード

<html lang="ja"> 
<head> 
<title>array_combine()関数を使用しキーと値の2つの配列から新しい配列を形成する</title>
</head>
<body>
<?php
$k_1 = array("田中","高杉","小山");
$v_1 = array("29","32","35");
$new = array_combine($k_1,$v_1);
print_r($new);
?>
</body>
</html>

今回はk_1という変数を定義し、その中で新しい配列を形成するために、array()関数を使用し、キーのみの配列を作成し、格納します。

次に、v_1という変数を定義し、その中に新しい配列を形成するために、array()関数を使用し、値(要素)のみの配列を作成し、格納します。

格納後、newという変数を定義し、その中でarray_combine()関数を使用します。array_combine()関数の括弧内には、第1の引数,パラメーターとしてk_1変数(キーのみの配列)を渡します。第2の引数,パラメーターとしてv_1変数(値(要素)のみの配列)を渡します。渡された情報を元に、新しい配列(キーと値(要素)のペア)が形成され返されます。

返された新しい配列であるnewをprint_r()関数で出力します。

■実行

では、このスクリプトを「new_sequence_two_sequences.php」という名前で保存し、実行させてみます。

実行してみると、array_combine()関数を使用したことで、k_1変数(キーのみの配列)と、v_1変数(値(要素)のみの配列)の情報を元に新しいnewという配列が形成されて、print_r()関数で出力することができました。

■2つの配列内の値(要素)の数が一致しない場合

出力後、2つの配列内の値(要素)の数が一致しない場合は、どうなるのでしょうか。やってみます。

■コード(new_sequence_two_sequences_2.php)

<html lang="ja"> 
<head> 
<title>array_combine()関数を使用しキーと値の2つの配列から新しい配列を形成する</title>
</head>
<body>
<?php
$k_1 = array("田中","高杉","小山");
$v_1 = array("29","32","35","100");
$new = array_combine($k_1,$v_1,$x_1);
print_r($new);
?>
</body>
</html>

■実行

このスクリプトを「new_sequence_two_sequences_2.php」という名前で保存し実行してみると、「Fatal error: Uncaught ValueError: array_combine(): Argument #1 ($keys) and argument #2 ($values) must have the same number of elements in 」という致命的なエラー(Fatal error)の不適切な値エラー(Uncaught ValueError)が出力されました。「引数#1($keys)と引数#2($values)の要素数は同じでなければなりません」という内容のエラーなので、やはり2つの配列には同じ数の要素が必要となる。

■3つの配列を結合させる場合

次に、3つの配列を結合させる場合はどうなるのでしょうか。やってみます。

■コード(new_sequence_two_sequences_3.php)

<html lang="ja"> 
<head> 
<title>array_combine()関数を使用しキーと値の2つの配列から新しい配列を形成する</title>
</head>
<body>
<?php
$k_1 = array("田中","高杉","小山");
$v_1 = array("29","32","35");
$x_1 = array("x","x","x");
$new = array_combine($k_1,$v_1,$x_1);
print_r($new);
?>
</body>
</html>

■実行

このスクリプトを「new_sequence_two_sequences_3.php」という名前で保存し実行してみると、「Fatal error:Uncaught ArgumentCountError: array_combine() expects exactly 2 arguments, 3 given in」という致命的なエラー(Fatal error)の無駄な引数のカウントエラー(Uncaught ArgumentCountError)が出力されました。「array_combine()関数は、正確に2つの引数を期待します」という内容で、3つの引数,パラメーターを渡すことができず、3つの配列を結合させることはできない。

コメント

タイトルとURLをコピーしました