配列操作の勉強用メモ。
array_column
・配列inputの中からcolumn_keyで指定した単一のカラムの値を返す。
・index_keyも指定すると、入力配列内のカラムindex_keyの値に基づいて結果を並び替えることができる。
array_column ( array $input , mixed $column_key [, mixed $index_key = NULL ] ) : array
<?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
・指定した配列の要素にコールバック関数を適用する。
・$array1の各要素にcallback関数を適用した後、その全ての要素を含む配列を返す。
・非破壊的メソッド
array array_map ( callable $callback , array $array1 [, array $array2…] )
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
$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
・配列と同様の形式で、複数の変数への代入を行う。
・関数でなく言語構造。
・数値添字の配列でのみ動作する。添字は 0 から始まることを想定。
list ( mixed $var1 [, mixed $... ] ) : array
<?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
$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
・配列要素を文字列により連結する。
・すべての配列要素の順序を変えずに、各要素間に glue 文字列をはさんで 1 つの文字列にして返す。
implode ( string $glue , array $pieces ) : string
<?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
$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>
*/
?>