php講座

配列

配列

宣言・初期化
$配列名[インデックス] = 値1;
$配列名[インデックス] = 値2;

※インデックスが省略されると連番が割り振られる→「一般的な配列」

$members[] = '高橋' //membersの0番(最初)に「高橋」を代入
print $members[0]; //「高橋」が出力
配列自体(入れ物)
$配列名
配列の中の入れ物
$配列名[インデックス]
初期化

※インデックスを正の整数とする

$members[1] = '新垣'

※membersの1番(0の次,前から二番目)に「新垣」を代入

一度に初期化する
$members = array('高橋','新垣');
array1.php
<?php
$groups = array('モーニング娘。','Berryz工房','℃-ute','真野恵里菜','スマイレージ');

$members[] = '藤本';
$members[0] = '高橋';
$members[] = '新垣';
$members[] = '亀井';
$members[] = '道重';
$members[] = '田中';
$members[] = '久住';
$members[] = '李';
$members[] = '銭';
?>
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8" />
   <title>配列1</title>
</head>
<body>
<h1>配列1</h1>
<dl>
<dt>グループ</dt>
<dd>
<ul>
<?php
//配列groupsの取り出し
print ("<li>".$groups[0]."</li>");
print ("<li>".$groups[2]."</li>");
?>
</ul>
</dd>
<dt>メンバー</dt>
<dd>
<ul>
<?php
print ("<li>".$members[5]."</li>");
?>
</ul>
</dd>
</dl>
</body>
</html>

連想配列

インデックスを文字列
$members[leader] = '高橋'

※membersの「leader」箱に「高橋」を代入

一度に初期化する
$members = array('leader' => '高橋','subleader' => '新垣');
array2.php
<?php
$groups = array('モ' => 'モーニング娘。', 'ベ' => 'Berryz工房', 'キ' => '℃-ute',
 'マ' => '真野恵里菜', 'ス' => 'スマイレージ');

$members['leader'] = '藤本';
$members['leader'] = '高橋';
$members[] = '新垣';
$members[] = '亀井';
$members[] = '道重';
$members['center'] = '田中';
$members[] = '久住';
$members[] = '李';
$members[] = '銭';
?>
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8" />
   <title>連想配列</title>
</head>
<body>
<h1>連想配列</h1>
<?php
// 連想配列$groupsの取り出し
print '<p>'.$groups['キ'].'</p>';
?>
<?php
print "<p>リーダーは{$members['leader']}</p>"; //連想配列の取り出しを""で行うときは{}が必要
print "<p>リーダー以外の1番手(配列の0番目)は$members[0]</p>";//普通の配列は{}が無くても大丈夫
?>
</body>
</html>

一次元配列

全部の値の取り出し
for($i ; $i < count($配列名); $i++){
  print $配列名[$i];
}

※count(配列)…配列の要素数

全部の値の取り出し2
foreach((array)$配列名 as $配列要素){
  print $配列要素;
}

※(array)…配列として受け取ったもの(フォームからのデータなど)が空でもエラーが出ないようにするため、無理から配列型にする

連想配列
foreach((array)$配列名 as $key => $value){
  print $key .'=>'. $value;
}
array3.php
<?php
$members[] = '藤本';
$members[0] = '高橋';
$members[] = '新垣';
$members[] = '亀井';
$members[] = '道重';
$members[] = '田中';
$members[] = '久住';
$members[] = '李';
$members[] = '銭';

$groups = array('モ' => 'モーニング娘。', 'ベ' => 'Berryz工房', 'キ' => '℃-ute',
 'マ' => '真野恵里菜', 'ス' => 'スマイレージ');
?>
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8" />
   <title>配列取り出し</title>
</head>
<body>
<h1>配列取り出し</h1>
<ul>
<?php
//配列$membersの取り出し
for($i = 0; $i < count($members); $i++){
    print "<li>$members[$i]</li>";
}
?>
</ul>
<ul>
<?php
//配列$membersの取り出し
foreach((array)$members as $member){
    print "<li>$member</li>";
}
?>
</ul>
<dl>
<?php
foreach((array)$groups as $key => $group){
    print "<dt>$key</dt>";
    print "<dd>$group</dd>";
}
?>
</dl>
</body>
</html>

多次元配列

配列の配列
配列…配列[0],配列[1],配列[2]
        配列[0]…配列[0][0],配列[0][1]…
        配列[1]…配列[1][0]…
        配列[2]…配列[2][0],配列[2][1],配列[2][2],配列[2][3]…
array4.php
<?php
$groups = array(
  array(
    '高橋','新垣','亀井','道重','田中','久住','光井','李','銭'
  ), 
  array(
    '清水','夏焼','熊井','嗣永','菅谷','徳永'
  ), 
  array(
    '矢島','鈴木','中島','岡井','萩原'
  )
);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8" />
   <title>配列3</title>
   <style>
   </style>
</head>
<body>
<h1>配列3</h1>
<ol>
<?php
//多次元配列の取り出し
  //配列の中身(小さな配列)を取り出す
foreach((array)$groups as $group){
  //配列の中の配列の中身を取り出す
    foreach((array)$group as $member){
        print "<li>$member</li>";
    }
}
?>
<ol>
</body>
</html>
array5.php
<?php
$groups = array(
  'モーニング娘。' => array(
    '高橋','新垣','亀井','道重','田中','久住','光井','李','銭'
  ), 
  'Berryz工房' => array(
    '清水','夏焼','熊井','嗣永','菅谷','徳永'
  ), 
  '℃-ute' => array(
    '矢島','鈴木','中島','岡井','萩原'
  )
);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
   <meta charset="UTF-8" />
   <title>配列4</title>
   <style>
   </style>
</head>
<body>
<h1>配列4</h1>
<dl>
<?php
//多次元配列の取り出し
  //連想配列の中身($key => 普通の配列)の取り出し
foreach((array)$groups as $group_name => $members){
    print "<dt>$group_name</dt>";
    //配列($members)の中身の取り出し
    foreach((array)$members as $member){
        print "<dd>$member</dd>";
    }
}
?>
<dl>
</body>
</html>