質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.34%

  • PHP

    21325questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    9562questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • teratail

    418questions

    teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

[=>]これなんですか?

受付中

回答 7

投稿

  • 評価
  • クリップ 0
  • VIEW 1,054

b1ackc0ffee

score 197

下記のコードを翻訳してください。
特に=>が何かわかりません。
宜しくお願い致します。
------------------------------
<?php
$defs = array('山田太郎','e-mail' => 'yamada@wings.msg.to',
  'zip' => '100-000','sex' => '男性','age' =>'40',
  'os' => array('win','linux'),'memo' =>'特になし'
);
?>
------------------------------
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 7

+2

KEYとVALUEのセットです。

$hoge = array('zip' => '100-000');

とした場合、 => の左辺がKEY、右辺がVALUE(値)になります。

これに対し、$hoge['zip']とすることで、100-000という値が取り出せます。

foreach($defs as $key => $val)
{
    echo $key . " : " . $val . "<br>\n";
}

などとしてみるとよくわかるかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/08 19:35

    有難うございます。
    私、luckerさんが思ってるレベルの10倍くらいは下なので、
    解読できませんです。
    ごめんなさい。
    サルでもわかるように教えてください。

    キャンセル

  • 2015/06/08 19:54

    まず、array()というのは配列です。

    例えば
    $a = array(1, 2, 3, "hoge", null);
    とすると、
    $aに1、2、3、"hoge"という文字列、null(値が未定義という意味)
    が順番に入ります。

    ここで、"hoge"を取り出したい場合は
    $a[3]
    でアクセスします。
    4番目なのになぜ3かというと、PHPではインデックスは0番から始まるからです。
    この数字を“添字”と呼びます。

    上記の例では値が5つなのでいいのですが、100個とか1000個とかあると、
    目的の値が何番目か調べるだけでも一苦労です。

    そこで、

    $b = array("label1" => 1、"label2" => 2、 "label3" => 3, "text" => "hoge", "info" => null);

    というように値にラベルを付けてしまいます。

    こうすると、
    $b["text"]
    で"hoge"という文字列を取り出せます。これを連想配列と呼びます。

    例えば
    $meibo = array(
    array("name" => "山田太郎", "shintyou" => 178),
    array("name" => "木下しずえ", "shintyou" => 156),
    array("name" => "大木凡人", "shintyou" => 164),
    );
    という連想配列の配列だと、

    $meibo[2]["name"] は 大木凡人
    $meibo[0]["shintyou"] は 178

    となります。

    キャンセル

0

配列$defsが大きな箱(棚?)と考え、各引出しには名前(これを配列のキーと呼ぶ)を付けることができます。
コンマからコンマまでが一つの引き出し(配列の値といいます)です。
'e-mail' => 'yamada@wings.msg.to' のように=>がついているものは、
前が引き出しの名前、後ろが中身です。
ついていない物は、そのままそれが引き出しの中身で、引き出しそのものには自動で名前が振られます。

=>の後ろが更にarray()となっている場合は、引き出しの中にさらに箱が入っていることになります。
なので'os' => array('win','linux')の部分は'os'という引出しの中にさらに箱が入っており、
引き出しは二つで、どちらも名前は指定されていない、ということになります。

引き出しの名前が指定されない場合は、頭から順に0~が振られていきます。
途中の要素に名前が指定された時は、欠番になるのではなくそのまま通し番号です。
(keyの振られ方についてはいろいろな配列をvar_dumpとかしまくってるとなんとなくわかってきますw)

なので、中身を取り出したいときは
一番外側の箱の名前[引き出しの名前][その中の引き出しの名前]...
というように目的の中身にたどり着くまで[]で引き出しの名前を指定することになります。

図がないとわかりにくいですね…orz

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

連想配列てやつですね。

$defs = array('山田太郎','e-mail' => 'yamada@wings.msg.to', 
本来配列は paint( $defs[0] ); といった感じで数字で中身を取り出します。(配列の数字のことを添え字)ともいいます。
連想配列を使うと paint( $defs['e-mail'] ); と数字の代わりに文字列を使って中身を取り出せます。
そして問題の定義ですが、'e-mail' => 'yamada@wings.msg.to' は
$defs['e-mail'] = yamada@wings.msg.to; このように 代入したのと同じ意味になります。
array('添え字名' => '代入したい文字列') といった感じで初期化します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

変数の中に配列が入っているので、まずどんな構成なのかを知るためにvar_dumpをしました。
var_dump($defs);

var_dumpの結果、以下の内容が出力されます。

array(7) {
  [0]=>
  string(12) "山田太郎"
  ["e-mail"]=>
  string(19) "yamada@wings.msg.to"
  ["zip"]=>
  string(7) "100-000"
  ["sex"]=>
  string(6) "男性"
  ["age"]=>
  string(2) "40"
  ["os"]=>
  array(2) {
    [0]=>
    string(3) "win"
    [1]=>
    string(5) "linux"
  }
  ["memo"]=>
  string(12) "特になし"
}

もっと分かりやすく書くと、

配列[7] {
  0:"山田太郎"
  e-mail:"yamada@wings.msg.to"
  zip:"100-000"
  sex:"男性"
  age:"40"
  os:
    配列[2] {
      0:"win"
      1:"linux"
    }
  memo:"特になし"
}

上記の配列は、連想配列と言います。
例えば、e-mailを見てみると、【e-mail:yamada@...】という構成になっています。
「e-mail」がkey(名前)で「yamada@...」がvalue(値)ですね。

このkeyとvalueの構成を持った配列を連想配列と言います。
質問の【=>】は、この連想配列を作る記号だと思ってください。

array('key'=>'value');

と書けば、

array(1) {
  ["key"]=>"value"
}

というような配列ができます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

連想配列のための接続詞です。

まず例題の連想配列を、通常の配列で表記すると以下のようになります。

$defs = array('山田太郎','yamada@wings.msg.to','100-000','男性','40', array('win','linux'),'特になし' );

■使用例
---
echo $defs[0];
実行結果: 山田太郎
---
echo $defs[3];
実行結果: 男性
---

PHPの一般的な配列記載方法については御理解されておられると存じます。
これを意味は同じで別の書き方をすると、以下のようになります。

$defs = array(
0=>'山田太郎',
1=>'yamada@wings.msg.to',
2=>'100-000',
3=>'男性',
4=>'40', 
5=>array('win','linux'),
6=>'特になし' 
);

■使用例
---
echo $defs[0];
実行結果: 山田太郎
---
echo $defs[3];
実行結果: 男性
---

※通常の配列は、0=> 1=> といった記述を省略しているのです。

連想配列とは、配列を参照するときに使う[]の中の数値を任意の名称にすることです。
連想配列で記載したものが以下の者になります。

$defs = array(
'name'=>'山田太郎',
'e-mail'=>'yamada@wings.msg.to',
'zip'=>'100-000',
'sex'=>'男性',
'age'=>'40', 
'os'=>array('win','linux'),
'memo'=>'特になし' 
);

■使用例
---
echo $defs["name"];
実行結果: 山田太郎
---
echo $defs["sex"];
実行結果: 男性
---

データを配列に格納した際に、[]の中が数値では、プログラミングするときにわかりにくかったり、間違えやすかったりしますが、連想配列にすると、[]の中に意味を連想する文字列で表現できるため、プログラミングがやりやすくなります。

プログラマーがプログラミングする際の親切機能としてとらえるとわかりやすいかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

変数を複数まとめられるのが配列と考えるとわかりやすいです。

配列の値に名前がつけれるのが連想配列。

$name = "akira";
$age = 20;
$address = "東京";

とかを

後でまとめて処理したいのでとりあえず変数に格納しておきたい時などに

$person = array(
  "name" => "akira",
  "age" => 20,
  "address" => "東京",
);

と書くことができます。

あとで$person["name"]などでアクセスできます。("akira")
phpでは配列も実際は数値をキーにした連想配列として扱われるらしいです。


投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-8

classに引数を渡す時に使います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/08 19:25

    なんか違う気がする…

    キャンセル

同じタグがついた質問を見る

  • PHP

    21325questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • HTML

    9562questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • teratail

    418questions

    teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。