Quantcast
Channel: 独学PHP・MySQL学習入門 »配列
Viewing all 10 articles
Browse latest View live

配列の作成(array)

0
0

配列を作るにはarrayを使います。

通常、変数は1つしか値を持てないので、

$kamoku1=’国語';
$kamoku2=’算数';
$kamoku3=’理科';

変数を使って設定しようとすると上記のようになりますが、「科目」といういれものをつくっておいて、「科目の1番目=国語」「科目の2番目=算数」みたにデータを取り出せたら便利ですよね。

これを実現するのが配列です。

具体例は下記のようになります。

$sample=array('国語','算数','理科');
pre_dump($sample);

 

Array
(
    [0] => 国語
    [1] => 算数
    [2] => 理科
)

pre_dump($sample);で
 
このように、配列に入っていることが確認できます。

[0][1][2]と番号が付いています。配列は0番から始まります。

値を取り出すにはこのように記述します。

echo $sample[0];
echo $sample[1];
echo $sample[2];




配列の先頭の要素を削除する(array_shift)

0
0

配列の先頭の要素を削除する方法です。

「array_shift」関数を使います。

$sample=array('1','2','3');
pre_dump($sample);

 

Array
(
[0] => 1
[1] => 2
[2] => 3
)

array_shift($sample);
pre_dump($sample);

 

Array
(
[0] => 2
[1] => 3
)



配列から指定した要素を取り出す(array_slice)

0
0

配列から指定した要素を取り出す方法です。

$sample=array(1,2,3,4,5,6,7);

//取り出し開始位置2(0から始まるので3つ目)から3つ取り出す
$sample2=array_slice($sample,2,3);
print_r($sample2);

 
[結果]

Array ( [0] => 3 [1] => 4 [2] => 5 )

 
取り出す個数は省略することができます。

省略した場合、下記のように配列の最後まで取り出します。

//取り出し開始位置2(0から始まるので3つ目)から最後まで
$sample2=array_slice($sample,2);
print_r($sample2);

 
[結果]

Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 6 [4] => 7 )

 

取り出す個数にマイナスを指定すると、指定位置から前の要素を取り出すこともできます。



配列の要素数を調べる(count)

0
0

配列に含まれる要素数を調べる方法です。

「count」関数を使います。

$test=array(1,2,3,4,5,6,7);
echo count($test);

配列に何も値が入っていない場合は「0」

配列でない場合は「1」

が返ります。

配列かどうかを調べるには「is_array」を使います。

注意すべき点は「配列でないときに1が返ってしまう」ところですね。



配列の足し算・合成・マージ(array_merge)

0
0

複数の配列を合成する方法です。

同じキーが存在する場合に上書きする・別々に扱うなど、幾つか方法があるので注意が必要ですね。

まず、同じキーがある場合に後から加える配列に上書きされるパターンです。

「array_merge」関数を使います。

$a=array('a'=>'国語','b'=>'英語','c'=>'理科','d'=>'数学','e'=>'社会');
$b=array('a'=>'国語','b'=>'体育','c'=>'算数','d'=>'美術','e'=>'家庭科');
$c=array_merge($a,$b);

var_dump($c);

[結果]

array(5) {
["a"]=>
string(6) "国語"
["b"]=>
string(6) "体育"
["c"]=>
string(6) "算数"
["d"]=>
string(6) "美術"
["e"]=>
string(9) "家庭科"
}

 

今度はすべての値を保持する方法です。

「array_merge_recursive」関数を使います。

$a=array('a'=>'国語','b'=>'英語','c'=>'理科','d'=>'数学','e'=>'社会');
$b=array('a'=>'国語','b'=>'体育','c'=>'算数','d'=>'美術','e'=>'家庭科');
$c=array_merge_recursive($a,$b);

var_dump($c);

[結果]

array(5) {
["a"]=>
array(2) {
[0]=>
string(6) "国語"
[1]=>
string(6) "国語"
}
["b"]=>
array(2) {
[0]=>
string(6) "英語"
[1]=>
string(6) "体育"
}
["c"]=>
array(2) {
[0]=>
string(6) "理科"
[1]=>
string(6) "算数"
}
["d"]=>
array(2) {
[0]=>
string(6) "数学"
[1]=>
string(6) "美術"
}
["e"]=>
array(2) {
[0]=>
string(6) "社会"
[1]=>
string(9) "家庭科"
}
}



配列のキーを取得する(array_keys)

0
0

配列のキーを取得する方法です。

「array_keyws」関数を使います。

$sample = array('name' => 'suzuki','mail' => 'test@example.com', 'age' => '20');
$keys = array_keys($sample);
foreach($keys as $value)
{
echo "{$value}<br/>";
}

 
[結果]

name
mail
age



配列の順序を逆転(array_reverse)

0
0

配列を逆転する方法です。

「array_reverse」関数を使います。

普通に配列を表示

まず、普通に配列を表示してみます。

$a=array(1,2,3,4,5,6,7);
var_dump($a);

[結果]

array(7) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
}

配列を逆転

$a=array(1,2,3,4,5,6,7);
$b=array_reverse($a);
var_dump($b);

 

結果を見てみると、下記のように配列が逆になっています。
[結果]

array(7) {
[0]=>
int(7)
[1]=>
int(6)
[2]=>
int(5)
[3]=>
int(4)
[4]=>
int(3)
[5]=>
int(2)
[6]=>
int(1)
}

 

添え字ごと配列を逆転

添え字ごと配列を逆転したい場合は、関数にフラグを設定します。

$a=array(1,2,3,4,5,6,7);
$b=array_reverse($a,TRUE);
var_dump($b);

 

[結果]

array(7) {
[6]=>
int(7)
[5]=>
int(6)
[4]=>
int(5)
[3]=>
int(4)
[2]=>
int(3)
[1]=>
int(2)
[0]=>
int(1)
}



範囲を指定して連続した配列を作る(range)

0
0

1から10までなど、範囲を指定して配列を作りたい場合には

「range」関数を使います。

連続する整数の配列

1から10までの連続する整数の配列を作ってみます。

$sample=range(0,10);

echo '<pre>';
print_r($sample);
echo '</pre>';

 
[結果]

Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
[10] => 10
)

飛び値の配列

飛ぶ値で配列を作りたい場合は、下記のように飛ぶ値を設定します。
 

$sample=range(0,10,2);

echo '<pre>';
print_r($sample);
echo '</pre>';

 

Array
(
[0] => 0
[1] => 2
[2] => 4
[3] => 6
[4] => 8
[5] => 10
)




[PHP]Warning: Invalid argument supplied for foreach() エラー対処

0
0

PHPでforeach文を使ったときに、

Warning: Invalid argument supplied for foreach()

というエラーが出た場合の対処法です。

考えられる原因は
1.配列が空
2.型が配列ではない
の2つです。

if (is_array($array)) {
  foreach ($array as $value) {
    //処理文
  }
}

配列でない文字列などを配列にするには、配列にキャストする方法があります。

$var='テスト';
$array=(array)$var;

(array)を変数の前につけるのがポイントです。
配列で無いものを通してしまいたい場合は、この処理を噛ませると良いでしょう。

PHPで配列をカンマ区切りに変換する方法 (implode)

0
0

PHPで配列のデータをカンマ区切りデータに変換する方法です。

「array(‘taro’,’jiro’,’saburo’)」

のような配列データを

「taro,jiro,saburo」

のようにカンマ区切りデータにする関数が用意されています。

関数は「implode」を使います。

書式は

「$result = implode(連結文字,配列)」

となります。

連結文字の部分をカンマ以外のものにすれば、カンマ区切り以外のデータも作成できます。

利用例

$arr = array('taro','jiro','saburo');
$result = implode(',', $arr);
echo $result;


フォームのチェックボックスのデータ(POST)で配列で飛んでくる)をカラムにカンマ区切りデータで登録したいときなどに便利です。


カンマ区切りから配列に変換するには「explode」関数を使います。

Viewing all 10 articles
Browse latest View live




Latest Images