
WPホームページ研究所運営サポートチーム監修のオムスビ(@OMUSUVIcom)です。
プログラミングでは「配列」と呼ばれるデータ構造をよく使います。配列は「データの保存形式」の1つ。PHPだけに限らず多くのプログラミング言語では値を配列として保存することがあります。
カンタンに言えば配列は「複数の値を1つの箱に格納できる便利な書き方」です。プログラミングでは値をまとめて1箇所に保存したくなるシチュエーションが多くあるので配列を使うことになります。
もちろん、プログラミングは自由なので配列を使わずにデータを1つずつ個別で保存しても構いません。ただしソフトウェアによってはすでに配列で保存することがルール付けられていることがあるので配列のデータ構造で値を取得したり、保存手順も覚える必要がありますよね。以下で配列を詳しくご紹介させていただきます。
目次
PHPで配列から必要な値を取り出せる関数「array_values」とは?
ワードプレスでも特定の値をプログラム側で取得すると配列で返ってくる場合があります。データベースからどんな値を取得したいのかで話も変わってくるので以下では一般的な例を解説させていただきます。
配列データは「echo」できない
プログラミングを学び始めると色々「echo(出力)」したくなりますよね。ただ、配列はechoできません。
以下はわかりやすくワードプレスのファンクションで処理を書きました。サイト側(管理画面以外)の全ページで出力される「wp_head」を使っているのでウェブサイト側で表示チェックに使えます。
function array_test_function() {
$fruits = array('いちご', 'マスカット', '桃');
echo $fruits;
}
add_action( 'wp_head', 'array_test_function' );
配列として果物の名前を3つ(いちご・マスカット・桃)代入しています。
▼echoした結果
しかし、配列データは「echo」で出力できず「Array」という文字が表示されます。配列だよという意味です。
配列データの中身を確認する方法
上記の「echo」を「var_dump」に置き換えると値を確認できます。
function array_test_function() {
$fruits = array('いちご', 'マスカット', '桃');
var_dump($fruits);
}
add_action( 'wp_head', 'array_test_function' );
中身が確認できました。番号では「0=いちご・1=マスカット・2=桃」ですね。
▼var_dumpした結果
プログラムでは0から始まるので3個目の桃が2番になっています。
3番の「桃」だけを取り出す方法
もし桃だけを出力したい場合は以下。ピンポイントの出力では「echo」が使えます。
function array_test_function() {
$fruits = array('いちご', 'マスカット', '桃');
echo $fruits[2];
}
add_action( 'wp_head', 'array_test_function' );
桃だけが出力されましたね。
▼番号指定でechoした結果
ワードプレスのデータベースから引っ張ってきた値が配列のデータ構造で個別で文字を出力したいなら上記の手順でOKです。もちろん、どんな値を取得するかでどの番号に入ってくるかわかりません。
var_dumpよりも「print_r」?
PHPでは「var_dump」で情報を取得して逐一中身を確認するのが一般的です。さきほど「echo」では配列全体を出力できませんでしたが別の関数で「print_r」という便利な出力方法があります。
function array_test_function() {
$fruits = array('いちご', 'マスカット', '桃');
print_r($fruits);
}
add_action( 'wp_head', 'array_test_function' );
下記の通り最低限の情報だけが出力される書き方ですね。配列であることに変わりはありませんが、中身を確認するためだけなら「var_dump」よりも「print_r」が見やすくすることができます。
▼print_rした結果
改行を入れてさらに見やすく工夫するなら以下の書き方がベストです。
function array_test_function() {
$fruits = array('いちご', 'マスカット', '桃');
echo "<pre>"; print_r( $fruits ); echo "</pre>";
}
add_action( 'wp_head', 'array_test_function' );
配列(Array)で0(いちご)、1(マスカット)、2(桃)とわかりやすいですね。
▼文字を整えて表示した結果
個人的には“型”もわかる「var_dump」をよく使います。型はstringやint等があります。
連想配列として値を保存する方法(キー指定でセットされた状態)
さきほどは各果物の名前に番号(0〜2)が振られていましたよね。実際のプロジェクトでは「データベース内に配列として保存された値」には(番号ではなく)名前がつけられていることが多いです。
▼var_dumpした結果
ちなみに書き方は以下となります。
function array_test_function() {
$fruits = ["strawberry" => "いちご", "muscat" => "マスカット", "peach" => "桃"];
var_dump($fruits);
}
add_action( 'wp_head', 'array_test_function' );
データベースから値を呼び出すSQL文によっては上記の通り「名前付きの配列」が返ってきます。ただルールに基づいて文字を出力したい場合は名前を数字で振り直したいシチュエーションがあります。
関数「array_values」で名前を番号に置き換える
キーをすべて番号に戻す方法が以下です。関数の「array_values」を使っています。
function array_test_function() {
$fruits = ["strawberry" => "いちご", "muscat" => "マスカット", "peach" => "桃"];
$result = array_values($fruits);
var_dump($result);
}
add_action( 'wp_head', 'array_test_function' );
元に戻りましたね。
▼var_dumpした結果
実際にデータベースから値を取得して名前付きの配列だった場合に「array_values」で元に戻します。番号に戻しておけばさっきと同じ手順で特定の要素を「echo」することもできるわけです。
データベースから値を取得すると配列として値が返ってくるケースが多いので必要なデータを取り出すためには色々な関数を使って置き換えて取得できる状態にしていきましょう。取得⇒変換⇒出力は基本です。
実際にデータベースから値を取得する方法は別で記事にしていますので併せてご参照ください。書き方としては下記のように特定の条件でSQL文を作ってデータ取得する流れです。その後UPDATE等はご自由に。
function array_test_function() {
global $wpdb;
$result = $wpdb->query($wpdb->prepare("SELECT テーブル名 SET フィールド名 = '$変数' WHERE フィールド名 = 番号"));
var_dump($result);
}
add_action( 'wp_head', 'array_test_function' );
もし取得した値が「配列」で特定の値が必要なら配列系の関数で変換してください。データベースの基本的な書き方は以下をご参照くださいませ。実際に使う場合はプレースホルダも忘れず設定しましょう。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する