PHP学習の配列Array操作とキー値対操作関数(一)

6497 ワード

PHPの配列は実際には秩序マッピングである.マッピングはvaluesをkeysに関連付けるタイプです.このタイプは多くの点で最適化されているため、真の配列、またはリスト(ベクトル)、ハッシュリスト(マッピングの実装)、辞書、集合、スタック、キュー、およびより多くの可能性と見なすことができます.配列要素の値は別の配列であってもよいため、ツリー構造および多次元配列も許可されます.
PHPでは、配列の各要素は「キー=>値」で構成され、要素のキーによって対応するキーの値にアクセスします.「関連配列」はキー名が文字列の配列を指し、「インデックス」と「キー名」は同じものを指す.「索引」は、配列の数値形式の下付き記号を指します.配列の処理関数を使用すると、配列内の各要素のキーと値を簡単に操作できます.
1配列array()の定義
array()構造で配列を新規作成し、任意の数のカンマで区切られたキー(key)=>値(value)ペアを受け入れることができます.キー(key)は整数integerまたは文字stringであり、値(value)は任意のタイプの値を使用できます.PHP 5.4から短い配列で構文を定義し、array()の代わりに[]を使用できます.
<?php

    $array=array(

        "foo"=>"bar",

        "bar"=>"foo"

        ); 



    $array=[          //  PHP5.4  。

        "foo"=>"bar",

        "bar"=>"foo",

    ];

?>


keyには、次のような強制変換もあります.
正規整数値を含む文字列は整数に変換されます.たとえば、キー名「8」は実際には8として格納されます.しかし、「08」は合法的な10進数ではないため、強制的に変換されません.
浮動小数点数も整数に変換され、小数部が切り捨てられることを意味します.例えば、キー名8.7は実際には8として格納される.
ブール値も整数に変換されます.すなわち、キー名trueは実際には1として格納され、キー名falseは0として格納される.
Nullは空の文字列に変換されます.すなわち、キー名nullは実際に「」に格納されます.
配列とオブジェクトはキー名として使用できません.それを続けると警告になります:Illegal offset type.   
配列定義で複数のセルが同じキー名を使用している場合は、最後のセルのみが使用され、前のセルは上書きされます.
<?php

$array = array(

    1    => "a",

    "1"  => "b",

    1.5  => "c",

    true => "d",

);

var_dump($array);

?> 



       :



array(1) {

  [1]=>

  string(1) "d"

}



                    :



<?php

$array = array(

         "a",

         "b",

    6 => "c",

         "d",

);

var_dump($array);

?>





      



array(4) {

  [0]=>

  string(1) "a"

  [1]=>

  string(1) "b"

  [6]=>

  string(1) "c"

  [7]=>

  string(1) "d"

}


PHP 5.4から関数またはメソッド呼び出しの結果を配列で間接的に参照できます.これまでは1つの一時変数しか使用できませんでしたが、PHP 5.5から配列で1つの配列プロトタイプを間接的に参照できます.
<?php

function getArray() {

    return array(1, 2, 3);

}



// on PHP 5.4

$secondElement = getArray()[1];



// previously

$tmp = getArray();

$secondElement = $tmp[1];



// or

list(, $secondElement) = getArray();

?>


値を変更するには、キー名でセルに新しい値を割り当てます.キー値ペアを削除するには、unset()関数を呼び出します.
<?php

$arr = array(5 => 1, 12 => 2);



$arr[] = 56;    //        $arr[13] = 56;





$arr["x"] = 42; //       , key=’x‘

                

unset($arr[5]); //     5=>1



unset($arr);    //       

?>


  
キー名が指定されていないカッコを指定した場合は、現在の最大整数インデックス値を取得します.新しいキー名は、この値に1を加算します(ただし、最小は0).現在整数インデックスがない場合は、キー名は0になります.ここで使用する最大整数キー名は、必ずしも現在配列内にあるとは限りません.前回の配列でインデックスが再生成された後に存在していればよいことに注意してください.次の例で説明します.
<?php

//          

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

print_r($array);



//            ,         :

foreach ($array as $i => $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

)


  
 2.is_array()    is_array-変数が配列であるかどうかを検出します.bool is_Array(mixed $var)、vararrayであればTRUE、そうでなければFALSE.   3.explode()
explode--1つの文字列を使用して別の文字列を分割します.array explode(string $delimiter,string $string[,int $limit])は、文字列からなる配列を返し、各要素はstringのサブ列であり、文字列delimiterによって境界点として分割される.delimiter境界の分割文字、string入力文字列は、limitパラメータが設定され正数である場合、返される配列は最大limit要素を含み、最後にその要素はstringの残りの部分を含む.limitパラメータが負の場合、最後の-limit要素を除くすべての要素が返されます.limitが0であれば、1と見なされます.
<?php

$str = 'one|two|three|four';



//     limit

print_r(explode('|', $str, 2));



//     limit(  PHP 5.1  )

print_r(explode('|', $str, -1));

?>



          



Array

(

    [0] => one

    [1] => two|three|four

)

Array

(

    [0] => one

    [1] => two

    [2] => three

)


  4.implode()
implode-1次元配列の値を文字列に変換
<?php



$array = array('lastname', 'email', 'phone');

$comma_separated = implode(",", $array);



echo $comma_separated; // lastname,email,phone



//       ,         

var_dump(implode('hello', array())); // string(0) ""



?> 


  5.split
split-正規表現で文字列を配列に分割し、array split(string $pattern、string $string[,int $limit])は、境界分割されたサブ列として各セルstringの大文字と小文字を区別した正規表現patternを持つ文字列配列を返します.limitが設定されている場合、返される配列は最大limit個のセルを含み、最後のセルはstringの残りのすべての部分を含む.エラーが発生した場合、split()はFALSEを返します.
<?php

//         , ,   

$date = "04/30/1973";

list($month, $day, $year) = split ('[/.-]', $date);

echo "Month: $month; Day: $day; Year: $year<br />
"; ?>

  6.preg_split()
  preg_split-正規表現で文字列を区切り、array preg_split(string $pattern,string $subject[,int $limit=−1[,int $flags=0]]),pattern検索のためのモード,文字列形式.subject入力文字列limit指定された場合、制限を区切ったサブストリングは最大limit個であり、返される最後のサブストリングは残りのすべての部分を含む.limitの値が-1、0またはnullの場合は「制限なし」を表し、phpの基準としてnullを使用してflagsの設定をスキップできます.