Php | memo-memo - Part 2 Skip to content

memo-memo

web制作に便利そうな情報をメモるブログ

Archive

Tag: php

定義されている変数が、配列かどうかを調べるには、is_array()を使用する。

<?php
$yes = array('this','is','an array');
echo is_array($yes) ? 'Array':'not an Array';
echo '<br />';
$no = 'this is a string';
echo is_array($no) ? 'Array':'not an Array';
?>

上記のコードをブラウザで出力させると、

Array
not an Array

こんな感じで出力される。

最初の「$yes」は、array()を使用して、配列として定義している。(array()については、こちら。)
一方「$no」は、文字列として定義している。
各々をis_array()を使った条件分岐にかけると、
is_array($yes)はTRUEを返し、is_array($no)はFALSEを返す。

array()を使用して、配列を定義する方法のメモ。

<?php
$weekdays = array('Monday',
 'Tuesday',
 'Wednesday',
 'Thursday',
 'Friday',
 'Saturday',
 'Sunday');
echo $weekdays[5];
?>

「Saturday」が出力される。

連想配列の場合は、下記の様な感じ。

<?php
$shapes = array('Soda Can' => 'Cylinder',
 'Note Pad' => 'Rectangle',
 'Apple' => 'Sphere',
 'Orange' => 'Sphere',
 'Phonebook' => 'Rectangle');
echo $shapes[Apple];
?>

この場合、「Sphere」が出力される。

関数が定義されているかどうかを調べるには、function_exists関数を使う。
require等で、関数が記述されているファイルを読み込んでいるかどうかの確認に使えるっぽい。

< ?php
$test = function_exists("test_this");
if($test == TRUE){
 echo "定義されてます";
}else{
 echo "定義されてません";
}
?>

上記のコードをブラウザで確認すると、「定義されてません」が出力される。

< ?php
$test = function_exists("test_this");
if($test == TRUE){
echo "定義されてます";
}else{
echo "定義されてません";
}
function test_this(){
echo "関数の定義";
}
?>

とすると、赤文字の所で、関数の定義をしているので、「定義されてます」が出力される。
ちなみに、関数を定義しただけで、中身の処理を全く書かなくても、「定義されてます」が出力される。

関数を定義する時のパラメータに、「&」を付ける事で、渡されたパラメーターが「参照渡し」である事を指定出来る。

<?php
function capitalize(&$str){
$str = strtolower($str);
$str = ucwords($str);
}
$str = "hELlo WoRLd";
capitalize($str);
echo ($str);
?>

上記を出力すると、

Hello World

と出力される。赤文字の&が無かったら、echo($str)は、変数として定義された”hELlo WoRLd”が出力されてしまうけど、関数capitalizeに、パラメーターを参照渡しで渡しているので、関数内でのローカル変数ではなく、直接変数として定義された$strに対して処理を行って、その後echoで出力している。

ucwords関数を使うと、文字列の各単語の先頭の文字を大文字に変換してくれる。

$hoge = "i have a pen";
$hoge = ucwords($hoge);
echo ($hoge);

上記の様なコードを書くと、

I Have A Pen

が出力される。
一方ucfirst関数を使うと、文字列の一番最初の文字を大文字にしてくれる。

$hoge = "i have a pen";
$hoge = ucfirst($hoge);
echo ($hoge);

上記の様なコードを書くと、

I have a pen

が出力される。
どっちかって言うと、ucfirstの方が使うかも?