PHP学習3

8164 ワード

PHP配列
PHPの配列は実際には秩序マッピングである.マッピングはvaluesをkeysに関連付けるタイプです.このタイプは多くの面で最適化されているため、真の配列、またはリスト(ベクトル)、ハッシュリスト、辞書、集合、スタック、キュー、およびより多くの可能性から使用できます.配列要素の値は、別の配列であってもよい.ツリー構造と多次元配列も許容されます.
構文
配列array()の定義
array()言語構造を使用してarrayを新規作成できます.カンマで区切られた任意の数のキー(key)=>値(value)ペアを受け入れます.
array(key=>value)
// (key)       (integer)    (string)
// (value)         
"bar", 12=>true);

echo $arr["foo"]; //bar
echo $arr[12]; //1
?>

keyはintegerまたはstringであってもよい.keyがintegerの標準表現である場合、整数として解釈される(例えば、「8」は8として解釈され、「08」は「08」と解釈される).keyの浮動小数点数はintegerに整列される.PHPでは、インデックス配列は関連配列と同じであり、整数と文字列の下付き文字を同時に含めることができます.値は任意のPHPタイプでよい.
array(6=>5, 13=>9, "a"=>42));

echo $array["somearray"][6]; //5
echo $array["somearray"][13]; //9
echo $array["somearray"][a]; //42
?>

与えられた値にキー名が指定されていない場合は、現在の最大整数インデックス値を取り、新しいキー名はキー名です.この値に1を追加します.指定したキー名にすでに値がある場合は、その値は上書きされます.
43, 32, 56, "b"=>12);

//...
array(5=>43, 6=>32, 7=>56, "b"=>12);
?>

Warning
自PHP 4.3.0から、上記のインデックス生成方法が変更されました.現在の最大キー名が負の配列に新しい値を追加すると、新しく生成されたインデックスは(0)になります.以前に新しく生成されたインデックスは、現在の最大インデックスに1つ追加され、正のインデックスと同じです.TRUEをキー名として使用するとinteger 1がキー名となる.FALSEをキー名として使用するとinteger 0がキー名になります.NULLをキー名として使用するのは、空の文字列を使用するのと同じです.空の文字列をキー名として使用すると、空の角カッコとは異なる新しい(または上書き)空の文字列をキー名として使用する値が作成されます.配列とオブジェクトをキーとして使用することはできません.これにより、Illegal offset typeという警告が表示されます.
四角カッコでの構文の新規作成/変更
既存の配列は、明示的な設定値によって変更できます.これは、四角カッコ内にキー名を指定して配列に値を割り当てることによって実現されます.キー名を省略することもできますが、この場合は変数名に1対の空のかっこ("[])を付けます.
$arr[key] = value;
$arr[] = value;
//key   integer string
//value         

$arrがまだ存在しない場合は、新しいものが作成されます.これも配列を定義する置換方法です.値を変更するには、新しい値を割り当てるだけです.キー名/値ペアを削除する場合は、unset()を使用します.
 1, 12 => 2);
  $arr[] = 56;  //This is the same as $arr[13] = 56;
                    // at this point of the script
  $arr["x"] = 42;  //This adds a new element to
                        //the array with key "x"
   unset($arr[5]);  //This removes the element from the array
   unset($arr);  //This deletes the whole array
?>
NOTE:
    ,              ,           ,         + 1。           ,      0。            ,      。
                        。                       。         :
 $value){
  unset($array[$i]);
}
print_r($array);

//      (       5,         0)
$array[] = 6;
print_r($array);

//    
$array = array_values($array);
$array[] = 7;
print_r($array);
?>

上記の例は次のように出力されます.
Array(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
  [4] => 5
)
Array(
)
Array(
  [5] => 6
)
Array(
  [0] => 6
  [1] => 7
)

ユーティリティ関数
Note:
unset()             。             。If a true "remove and shift" behavior is desired, the array can be reindexed using the array_values() function.

 'one', 2 => 'two', 3 => 'three');
unset($a[2]);
/*will produce an array that would have been defined as
   $a = array(1=> 'one', 3 => 'three');
   and NOT
   $a = array(1 => 'one', 2=>'three');
*/

  $b = array_values($a);
  //Now $b is array(0=>'one', 1=>'three')
?>

foreach制御構造は配列に特化している.配列を巡る簡単な方法を提供します.
PHPオブジェクト
新しいオブジェクトobjectを作成するには、new文を使用してクラスをインスタンス化します.class foo{function do_foo(){echo"Doing foo.";}
$bar = new foo; $bar->do_foo(); ?>
オブジェクトに変換
オブジェクトをオブジェクトに変換すると、オブジェクトは変更されません.他の任意のタイプの値がオブジェクトに変換されると、クラスstdClassを内蔵したオブジェクトがインスタンス化されます.値がNULLの場合、新しいインスタンスは空です.配列をオブジェクトに変換すると、キー名が属性名になり、対応する値が得られます.scalarという他の値には、scalarというメンバー変数が含まれます.
scalar;  //outputs 'ciao'
?>

PHPリソースタイプ
リソースは特殊な変数であり、外部リソースへの参照を保存します.リソースは、専用の関数によって構築され、使用されます.Note:リソースタイプはPHP 4が導入したものです.
PHP NULL
特殊なNULL値は、変数に値がないことを示します.NULLタイプで唯一可能な値はNULLです.Note:NULLタイプはPHP 4が導入したものです.
次の場合、1つの変数はNULL:+がNULL+が割り当てられていない+がunset()
構文
NULLタイプには1つの値しかありません.つまり、大文字と小文字が敏感でないキーワードNULLです.


NULLに変換
変数をnullタイプに変換すると、変数が削除され、unsetの値が削除されます.
PHP本書で使用する擬似タイプ
mixed
mixedは1つのパラメータがすべてのPHPタイプを受け入れることができることを説明して、str_replace()は文字列と配列を受け入れることができます.
number
numberは、パラメータがuntegerまたはfloatであってもよいことを示す.
callback
コールのようなものもありますuser_function()またはusort()の関数は、ユーザーがカスタマイズした関数をパラメータとして受け入れます.Callback関数は単純な関数であるだけでなく、静的クラスの方法を含むオブジェクトの方法であってもよい.1つのPHP関数は関数名で伝達されます.array()、echo()、empty()、eval()、exit()、isset()、list()、print()、unset()などの言語構造を除いて、内蔵またはユーザー定義の関数を渡すことができます.1つのオブジェクトのメソッドは配列の形式で伝達され、配列の下付き0はオブジェクト名を示し、下付き1はメソッド名を示す.オブジェクトとしてインスタンス化されていない静的クラスの場合、そのメソッドを渡すには、配列0の下に示されているオブジェクト名をクラスの名前に変更します.通常のユーザー定義の関数に加えてcreate_を使用することもできます.function()は、匿名のコールバック関数(callback)を作成します.
Example#1コールバック関数の例


Note:
PHP 4では、参照を使用して、コピーではなく実際のobjectを作成する必要があります.詳細は引用の説明を参照してください.In PHP4, it was necessary to use a reference to create a callback that points to the actual object, and not a copy of it. For more details, see References Explained.
void
voidが戻りタイプであることは,関数の戻り値が不要であることを意味する.voidがパラメータリストとして機能することは、関数がパラメータを受け入れないことを意味する.
...
関数のプロトタイプでは$...などの意味を表す.この変数名は、関数が任意のパラメータを受け入れることができる場合に使用します.
PHPタイプ変換の判別PHPは変数定義において明確なタイプ定義を必要としない(またはサポートしない)変数タイプは、その変数を使用するコンテキストに基づいて決定されます.すなわち,変数varに文字列値を割り当てるとvarは文字列になる.またvarに整数値を割り当てると、整数になります.PHPの自動タイプ変換の一例は「+」です.いずれかのオペランドが浮動小数点数であれば、すべてのオペランドが浮動小数点数とされ、結果も浮動小数点数となる.そうでなければ、オペランドは整数として解釈され、結果も整数であり、これらのオペランド自体のタイプは変更されていないことに注意する.変更されたのは、これらのオペランドがどのように評価されるか、および式自体のタイプだけです.


タイプ強制変換
PHPのタイプ強制変換とCの非常に似ています.変換する変数の前にカッコで囲まれたターゲットタイプを付けます.


許容される強制変換は、+(int),(integer)−整数(integer)+(bool),(boolean)−ブール(boolean)+(float),(double)に変換され、(real)-float+(string)-文字列(string)+(binary)-バイナリ文字列(string)+(array)-配列(array)+(object)-オブジェクト(object)+(unset)-NULL(PHP 5)に変換
(binary)変換は結果の前に接頭辞'b'を付け、PHP 5.2.1が追加されます.
注意カッコ内にスペースとタブが許可されているので、次の2つの例の機能は同じです.


文字列(string)テキストと変数をバイナリ文字列(string)に変換します.


Note:
変数を文字列に変換する代わりに、変数を二重引用符で囲むことができます.


タイプ間で強制的に変換すると、正確に何が起こるかは明らかではない場合があります.