PHP 配列関数の勉強

配列操作の勉強用メモ。

## [array_column](https://www.php.net/manual/ja/function.array-column)
・配列inputの中からcolumn_keyで指定した単一のカラムの値を返す。
・index_keyも指定すると、入力配列内のカラムindex_keyの値に基づいて結果を並び替えることができる。


```php
array_column ( array $input , mixed $column_key [, mixed $index_key = NULL ] ) : array
```

```php
<?php
// データベースから返ってきたレコードセットの例
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);
 
$first_names = array_column($records, 'first_name');
print_r($first_names);

/*
Array
(
    [0] => John
    [1] => Sally
    [2] => Peter
)
*/
?>
```

## [array_map](http://php.net/manual/ja/function.array-map.php)
・指定した配列の要素にコールバック関数を適用する。
・$array1の各要素にcallback関数を適用した後、その全ての要素を含む配列を返す。
・非破壊的メソッド

```php
array array_map ( callable $callback , array $array1 [, array $array2…] )
```

```php
function root($n)
{
    return $n * $n;
}

$a = array(1, 2, 3);
$b = array_map("root", $a);
print_r($b);

/*
Array
(
    [0] => 1
    [1] => 4
    [2] => 9
)
*/
```
###配列の配列を生成
nullをコールバック関数にすることで、配列の配列を作成することができる。

```php
<?php
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");

$c = array_map(null, $a, $b);
print_r($c);

/*
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
        )
)
*/
?>
```

## [list](https://www.php.net/manual/ja/function.list.php)
・配列と同様の形式で、複数の変数への代入を行う。
・関数でなく言語構造。
・数値添字の配列でのみ動作する。添字は 0 から始まることを想定。


```php
list ( mixed $var1 [, mixed $... ] ) : array
```

```php
<?php

$info = array('コーヒー', '茶色', 'カフェイン');

// すべての変数の取得
list($drink, $color, $power) = $info;
echo "$drink の色は $color で、$power が含まれています。\n";

// 一部の変数の取得
list($drink, , $power) = $info;
echo "$drink には $power が含まれています。\n";

// 三番目のみの取得
list( , , $power) = $info;
echo "$power 欲しい!\n";

// list() は文字列では動作しません
list($bar) = "abcde";
var_dump($bar); // NULL
?>
```
### 使用例：配列を一気に変数に代入

```php

<?php
$conn = pg_pconnect("dbname=hoge");

$result = pg_query($conn, "select name, email from test_tab");

while (list($name, $email) = pg_fetch_row($result)) {
    echo $name . "/" . $email . "\n";
}
?>
```

## [implode](https://www.php.net/manual/ja/function.implode.php)
・配列要素を文字列により連結する。
・すべての配列要素の順序を変えずに、各要素間に glue 文字列をはさんで 1 つの文字列にして返す。

```php
implode ( string $glue , array $pieces ) : string
```

```php
<?php

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

// 空の配列を使うと空文字列となります
var_dump(implode('hello', array())); // string(0) ""
?>
```
### 使用例：listの作成
```php

<?php
$elements = array('a', 'b', 'c');

echo "<ul><li>" . implode("</li><li>", $elements) . "</li></ul>";

/*
<ul><li>a</li><li>b</li><li>c</li></ul>
*/
?>
```