2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPでの配列とハッシュ(連想配列)の書き方(初学者向け)

Last updated at Posted at 2022-04-03

はじめに

PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

環境

MAMPをインストールします。
エディタはVScodeです。

環境構築方法

MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

バージョン

以下のバージョンで挙動を確認しました。

スクリーンショット 2022-03-31 1.32.17.png

配列とは

簡単にいうとデータのかたまりのことです。
つまりデータをたくさん詰められるタンスのような役割をしています。
そして、データ1つ1つは箱のようなもので、要素と呼んでいます。

例えば、それぞれ名前(文字列)を格納するようなイメージになります。

image.png

引用  https://www.web-knowledge-info.com/wp/php6/

箱1つ1つには番号が振られていて、この番号を添字と呼んでいます。添字は0から始まります。

変数と配列を比較する

変数と配列を比較していきましょう。

まず変数からです。変数名を動物にしていきます。

<?php
//変数
$animal_1 = "犬";
$animal_2 = "猫";
$animal_3 = "猿";

echo $animal_1. "<br>". $animal_2. "<br>". $animal_3; //brは改行

//犬
//猫
//猿

ただこの変数の数が10000個とかになると時間がかかってしまいますよね。
そこで配列が登場します。配列を見ていきましょう。

<?php
//配列
$animal[0] = "犬";
$animal[1] = "猫";
$animal[2] = "猿";

echo $animal[0]. "<br>". $animal[1]. "<br>". $animal[2];
//犬
//猫
//猿

配列では***[添字]***を入れていきます。

配列の格納

配列を実際に格納のやり方を見ていきます。

$animal = ["犬","猫","猿"];
echo $animal;

//犬
//猫
//猿

$animal = ["犬", "猫", "猿"];
echo $animal[0] . "<br>";
//犬

数字でも表せます。

$array = [10,20,30];  //arrayは配列
echo $array[0];
echo $array[1];
//10
//20

プログラムは0から始まります。

var_dumpで配列を中身を見てみます。

$array = [10,20,30];
var_dump($array);

// array(3) { [0]=> int(10) [1]=> int(20) [2]=> int(30) }

出力を見やすくするのに<pre>を使います。

<?php

$array = [10,20,30];
echo "<pre>";
var_dump($array);
echo "<pre>";

//array(3) {
//  [0]=>
//  int(10)
//  [1]=>
// int(20)
// [2]=>
// int(30)
//}

デバック関数print_r

デバック用にPHPが用意している関数で、print_rと言います。
配列の中身を確認したりするときに使います。

$score[0] = 100;

echo $score[0]. "<br>";

echo print_r($score). "<br>";

//100
//Array ( [0] => 100 ) 1

var_dumpも入れてみると

$score[0] = 100;

echo $score[0]. "<br>";

echo print_r($score). "<br>";
echo var_dump($score);

//100
//Array ( [0] => 100 ) 1
//array(1) { [0]=> int(100) }

var_dumpはprunt_rよりも詳しく確認したい場合に使います。

ハッシュ(連想配列)

ハッシュとはkeyやvalueを入れて配列よりもわかりやすく表したものです。

image.png

引用 https://www.web-knowledge-info.com/wp/php6/

さらにハッシュでは$data以外にもいろいろなグループに分けたりすることができます。
ex) $school,$Playerなど

配列の初期化

配列の初期化のやり方は下記のコードになります。

<?php
//配列の初期化
$array = array();
$array = [];

echo print_r($array);

//Array ( ) 1

値を入れた初期化の方法です。

<?php
$animal =  ["ライオン","チーター","トラ"];
echo print_r($animal);

//Array ( [0] => ライオン [1] => チーター [2] => トラ ) 1

ハッシュの書き方

まずは簡単な書き方からです。

$score[0] = 100;
$score[3] = 70;
echo $score[0] . "<br>";
echo $score[3] . "<br>";
//100
//70

$score[0] = 100;
$score[3] = 70;
echo print_r($score) . "<br>";

//Array ( [0] => 100 [3] => 70 ) 1
//"<br>"は改行

$score["japanese"] = 100;
$score["english"] = 70;
echo print_r($score) . "<br>";
//Array ( [japanese] => 100 [english] => 70 ) 1

$intKey = 50;
$age[$intKey] = 100;
echo print_r($age) . "<br>";
//Array ( [50] => 100 ) 1

$score["japanese"] = 100;
$score["english"] = 70;
echo print_r($score) . "<br>";

$intKey = 50;
$age[$intKey] = 100;
echo print_r($age) . "<br>";

$strKey = "math";
$score[$strKey] = 80;
echo print_r($score) . "<br>";

//自動割り当て
$fruits[] = "apple";
$fruits[] = "orange";
echo print_r($fruits) . "<br>";
//Array ( [0] => apple [1] => orange ) 1

$height[0] = 160;
$height[1] = 170;
$height[2] = 180;
echo $height[0] . "<br>";

$height[] = 190;
echo print_r($height) . "<br>";
//160
//Array ( [0] => 160 [1] => 170 [2] => 180 [3] => 190 ) 1

ここではサッカー選手を変数にしていきます。

<?php
$soccer_player = ["name" => "メッシ","nation" => "アルゼンチン","height" => 169];

echo  $soccer_player["name"];
//メッシ

連想配列ではechoの後にkeyの部分を入れたりします。
var_dumpなどで中身を見ていきます。

<?php
$soccer_player = ["name" => "メッシ","nation" => "アルゼンチン","height" => 169];
echo  $soccer_player["name"];

echo "<pre>";
var_dump($soccer_player);
echo "</pre>";

//メッシ
//array(3) {
//  ["name"]=>
// string(9) "メッシ"
//  ["nation"]=>
//  string(18) "アルゼンチン"
//  ["height"]=>
// int(169)
//}

キーと値の初期化

次にキーと値を入れて初期化していきます。

<?php
$soccer_player =  [
    "メッシ" => "Messi",
    "ロナウド" => "Ronald",
    "ネイマール" =>  "Neymar",
];
echo print_r($soccer_player) . "<br>";

//Array ( [メッシ] => Messi [ロナウド] => Ronald [ネイマール] => Neymar ) 1

ロナウドを出力したい場合は

<?php
$soccer_player =  [
    "メッシ" => "Messi",
    "ロナウド" => "Ronald",
    "ネイマール" =>  "Neymar",
];
 print_r($soccer_player ). "<br>";
 echo $soccer_player["ロナウド"]. "<br>";
//Array ( [メッシ] => Messi [ロナウド] => Ronald [ネイマール] => Neymar ) 
//Ronald

多次元配列

配列の中に配列があるもの多次元配列と言います。

<?php
$pokemon_1 = [
    "ピカチュウ","ミュウ","ミュウツー"
];

$pokemon_2 = [
        "リザードン","カメックス","フシギバナ"
];

//この2つの配列を組み合わせて多次元配列

$my_pokemon = [
    $pokemon_1, $pokemon_2  
];
?>

<pre><?php echo print_r($my_pokemon). "<br>"; ?></pre>

で実行すると

Array
(
    [0] => Array
        (
            [0] => ピカチュウ
            [1] => ミュウ
            [2] => ミュウツー
        )

    [1] => Array
        (
            [0] => リザードン
            [1] => カメックス
            [2] => フシギバナ
        )

)
1

さらに下のコードを入れると以下のように出ます。

<?php echo $my_pokemon[0][2]. "<br>";
echo $my_pokemon[1][0]. "<br>";
//ミュウツー
//リザードン

今回は2つしか配列はないですが、配列の数が増えるとどんどん階層が深くなっていきます。

多次元配列を出力

多次元配列を下の例題に沿って書いていきます。

下のポケモンの名前、レベル、タイプの値が入った2次元配列を作り、
連想配列を1つ作って、その配列の中身を全て出力する
①名前 : ピカチュウ レベル : 70  タイプ : "電気"
②名前 : リザードン レベル : 90   タイプ : "炎"
③名前 : ミュウツー レベル : 100  タイプ : "エスパー"
$pokemon = [
["name" => "ピカチュウ", "level" =>  70, "type" => "電気"],
["name" => "リザードン", "level" =>  90, "type" => "炎"],
["name" => "ミュウツー", "level" =>  100, "type" => "エスパー" ],
];

$Pikachu = ["name" => "ピカチュウ", "level" =>  70, "type" => "電気"];
$Charizard = ["name" => "リザードン", "level" =>  90, "type" => "炎"];
$Mewtwo = ["name" => "ミュウツー", "level" =>  100, "type" => "エスパー"];

//$pokemon = [$Pikachu,$Charizard,$Mewtwo];
?>

<pre><?php echo print_r($pokemon). "<br>";?> </pre>

出力すると

Array
(
    [0] => Array
        (
            [name] => ピカチュウ
            [level] => 70
            [type] => 電気
        )

    [1] => Array
        (
            [name] => リザードン
            [level] => 90
            [type] => 炎
        )

    [2] => Array
        (
            [name] => ミュウツー
            [level] => 100
            [type] => エスパー
        )

)
1

ちなみにvar_dumpを使うと

<pre><?php var_dump($pokemon). "<br>";?> </pre>
array(3) {
  [0]=>
  array(3) {
    ["name"]=>
    string(15) "ピカチュウ"
    ["level"]=>
    int(70)
    ["type"]=>
    string(6) "電気"
  }
  [1]=>
  array(3) {
    ["name"]=>
    string(15) "リザードン"
    ["level"]=>
    int(90)
    ["type"]=>
    string(3) "炎"
  }
  [2]=>
  array(3) {
    ["name"]=>
    string(15) "ミュウツー"
    ["level"]=>
    int(100)
    ["type"]=>
    string(12) "エスパー"
  }
}

PHPの基礎がわからない方向けの記事

全くわからない方は下の記事を読んでみてください。

参考資料

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?