PHP には 3 種類の配列があります: 数値配列 数値 ID キーを持つ配列 連想配列 配列内の各 ID キーは値に関連付けられます 多次元配列 1 つ以上の配列を含む配列 さて、メモを見てみましょう。
コードは次のとおりです | コードをコピー | ||||||||
header('Content-Type: text/html; charset=utf-8'); エコー ' '; 関数 var_array($array) <br> { <br> エコー '<pre class="brush:php;toolbar:false">'; var_dump($array); エコー ''; } 関数 printr($array) { エコー ' '; print_r($array); エコー ''; } 関数 getArr($sNum, $eNum=1, $step=1) { $arr = range($sNum, $eNum, $step); $reArr = 配列(); foreach($arr as $v) { $reArr[$v] = ランド(0,10); } 設定を解除($arr) $reArr を返します。 } /** * 配列配列の演習 */ //------------------------------------------------ //array_change_key_case() は、最後のパラメータ CASE_UPPER (大文字に変換)、CASE_LOWER (デフォルトで小文字に変換) によって決定される、配列インデックスの大文字と小文字を変更します $expArr = 配列( 'fiRsT' => '1'、 'sEcoNd' => '2'、 'ThIrd' => array( 'フイマ' => '3'、 'nengZhuaNma' => '5'、 ) ); printr(array_change_key_case($expArr));//すべてを小文字に変換します printr(array_change_key_case($expArr['ThIrd'], CASE_UPPER));//すべてを大文字に変換 $expArr 配列内のインデックス キーのみを変換します //概要: この関数は配列の 1 つのレベルにのみ影響します。 元の配列には影響しません echo ' '; //----------------------------------------------- //array_chunk($array, $size, false) //配列を多次元配列に分割します。size は、$size ごとに配列がどのように多次元配列になるかを決定します。true/false は、新しい配列のキー値が元の配列のキーを継承するかどうかを決定します $expArr = 配列('4','2','6','d','2'); printr(array_chunk($expArr, 3)); //概要: この関数は配列の 1 つのレベルにのみ影響します。 元の配列には影響しません echo ' '; //----------------------------------------------- //array_combine($keyArr, $valArr) // 2 つの配列を 1 つの配列に結合します。$keyArr がキー、$valArr が値になります $expKey = array('g', 'd', 't'); $expVal = 配列('5', '8', '7'); printr(array_combine($expKey, $expVal)); //この関数も配列の 1 つのレベルにのみ影響し、新しい配列を返します echo ' '; //----------------------------------------------- //array_count_values($array) // $array 配列内の各値の出現回数をカウントし、その値を新しい配列のキーとして使用し、出現回数を値として使用します $array = array('v1'=>'265', 'v2'=>'352', 'v3'=>'265', 'v4'=>'349', 'v5'=> ;'265'); printr(array_count_values($array)); //概要: この関数は文字列型と整数型の統計値にのみ使用できます。他の型では警告が発行されます。 echo ' '; //----------------------------------------------- //array_diff($array1, $array2...) // $array1 を基本配列として使用し、その値は新しい配列を形成する他のパラメーター配列には現れません $arr1 = array('v4'=>458, 'gren', 'b5', 'a5'); $arr2 = array('v4'=>598, 'red', 'a5', 'c4'); printr(array_diff($arr1, $arr2)); //概要: 配列を取得し、それを多数の配列に入れて、配列にない値を見つけるには、統計とデータ比較を使用する必要があります //array_intersect($array, $parArr, ....) //この関数は機能的には array_diff と同じですが、array_intersect() は共有データを返すのに対し、array_diff は $array にのみ存在するデータである点が異なります // echo ' '; //----------------------------------------------- //array_diff_assoc($array1, $array2...) // array_diff() 関数と同じですが、これも比較にキーを使用します // echo ' '; //----------------------------------------------- //array_diff_key //array_diff()関数と同じ //これは、他のパラメーター配列で検索するために $array1 のキーのみを使用するだけです // echo ' ';//----------------------------------------------- //array_diff_uassoc($arr1, $parArr...., コールバック関数) //関数は array_diff() と同じですが、ユーザーはコールバック関数を定義する必要があります //この関数の機能がわかりません // echo ' '; //----------------------------------------------- //array_diff_ukey($arr1, $parArr...., コールバック関数) //関数は array_diff_key() と同じですが、array_diff_uassoc と同じであり、コールバック関数が必要です // // echo ' '; //------------------------------------------------ //array_fill($startInt, $numInt, $value) // $value を新しい配列に入力します。新しい配列の開始インデックス位置は、$startInt によって決定されます。$numInt は、この配列によって生成されるインデックスの数を制御します。 //ヒント: $value、$startInt、$numInt 以外は数値でなければなりません。そうでない場合はエラーが報告されます printr(array_fill(2, 5, '値')); //要約: 何に使用するか分かりません echo ' '; //----------------------------------------------- //array_fill_keys($arrKeys, $value); //関数はarray_fill()関数と同じです。 $arrKeys [配列の値] が新しい配列のキーとして使用されるだけです $arrKeys = array('45', 'd', 'b', 'c'); printr(array_fill_keys($arrKeys, '値')); echo ' '; //------------------------------------------------ //array_filter($arr, callBack コールバック関数) //フィルター関数は、$arr 配列の値を判断して、callBack コールバック関数が true を返した場合、現在のキーと値が新しい配列に追加されます //ヒント: コールバック関数は、ルールに準拠しない配列キーを除外するルールを作成できます 関数 cb($val) { $val%2 == 0 を返します; } $array = array('k1'=>3, 'k2'=>5,'k4'=>54654, 'k5'=>8794, 8945, 32549564); printr($array, 'cb'); //ヒント: コールバック関数名は引用符で囲むことをお勧めします //概要: このメソッドはデータ フィルタリングの統合に使用できます unset($array); echo ' '; //------------------------------------------------ //array_flip($array) //配列内のキーと値の関係を変換します。文字列および統合型のキーのみがサポートされており、他の型については警告が発行され、問題のキー値は変換されません。生成された新しい配列では、キーが同じ場合、既存のキーの値が継続的に置き換えられます $arr = array('k1'=>'v1', 'k2'=>'v2', 'k3'=>'v4', 'k4'=>'v4', 'k5'=> ;'v5'); printr(array_flip($arr)); 設定を解除($arr) echo ' '; //------------------------------------------------ //array_key_exists($key, $array) //現在の配列にキーが存在するかどうかを判断し、bool を返します。物体の判断にも使えます $array = array('cb' => 234, 'dv'=> 45, 'one'=> 897); if(array_key_exists('one', $array)) echo 'この配列に存在します'; それ以外は エコー「存在しません」 ; echo ' '; //------------------------------------------------ //array_keys($array, $selSearch_value) //配列内のキー名を返し、新しい配列を形成します。 $selSearch_value が指定されている場合、$selSearch_value に等しい配列内のキー名が返されます $array = getArr(4, 10); printr(array_keys($array)); printr(array_keys($array, '5'));//値で検索 unset($array); //概要: データ統計やデータ比較検証にも使用できます echo ' '; //------------------------------------------------ エコー 'array_map:'; //array_map('callBack', $array,...) //渡された関数をコールバック関数の戻り値に返す //コールバック関数は配列を返すこともできます。さらに、コールバック関数は、渡される配列内の値のみを受け入れます 関数マップCb($n) { $n*$n*$n を返します。 } $array = getArr(4, 15); printr(array_map('mapCb', $array)); echo ' '; //------------------------------------------------ //array_merge($array,$array2...) //複数の配列を 1 つの配列に結合し、数値インデックスを書き換えます。 $arr1 = getArr(1, 5); $arr2 = getArr(5, 10); printr(array_merge($arr1, $arr2)); //概要: 複数の配列を新しい配列に結合します。 echo ' '; //------------------------------------------------ //array_merge_recursive($arr1, $arr2....) // 機能は上記と同じです。ただし、関数はキーを置き換えるのではなく、同じキー名の値を持つ新しい配列を形成します //ただし、使用したい場合は、実際の状況に応じて使用してください echo ' '; //------------------------------------------------ //array_multisort() //多次元配列のソート。現在は 2 次元配列のソートのみが実装されています。立体的には配置できないと推定されます //この関数はメンバー配列の順序を直接変更します echo ' '; //------------------------------------------------ //array_pad($arr, $size, $value) // $arr の現在の長さが $size より小さい場合は、$arr の長さが $size に等しくなるまで $value を使用して $arr 配列を埋めます //$arr の長さが $size 以上の場合、この関数は $arr を埋めません。 $size が 0 より小さい場合は $arr の左側に埋められ、0 より大きい場合は右側に埋められます echo ' '; //------------------------------------------------ //array_pop($array) //配列の最後のキーを削除します。 echo ' '; //------------------------------------------------ //array_product($arr) //配列内のすべての値の積を返します。 //ヒント: この関数は数値以外のデータを処理できません。受信配列に「a や b などの文字列」が含まれている場合、PHP はエラーを報告します $arr = 配列(4,5,5); エコー配列製品($arr); echo ' '; //------------------------------------------------ //array_push($arr, $keyArr) // $keyArr を $arr 配列の末尾にキー/スタックの形式で追加します。 // 2 つの関数 array_merge() と array_merge_recursive() の違い: // arrap_push() は $keyArr を $arr に追加し、他の 2 つの関数は複数の関数を 1 つの関数に接続します echo ' '; //------------------------------------------------ //array_rand($arr, $num=1) // 現在の配列内のキーを取得します。キーの数は $num で決まり、デフォルトは 1 です // $num が 1 の場合、文字列を返します // $num>1 && $num $arr = getArr(5, 15); printr(array_rand($arr, 4)); echo ' '; //------------------------------------------------ //array_reduce() //array_map()と同様に、配列内の値はコールバック関数を通じて処理され、戻り値が受け入れられます //この関数は文字列を返します。配列内のすべての値を計算して計算値を返しますが、array_map は各キーの値を計算して配列を返します //よくわかりません。例についてはマニュアルを参照してください echo ' '; //------------------------------------------------ //array_replace($array, $parArr,...) // $array 内の同じキーの値をパラメータ配列内のキーの値に置き換えます // $array 配列の後続のパラメーター配列で対応するキーが見つからない場合は、それを新しい配列の末尾に追加します /*$arr = getArr(4, 10); $arr2 = getArr(6, 15); プリンター($arr); printr($arr2);*/ $base = array('citrus' => array( "オレンジ") , 'ベリー' => array("ブラックベリー", "ラズベリー"), ); $replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry')); printr(array_replace($base, $replacements)); echo ' '; //------------------------------------------------ //array_replace_recursive() 再帰置換 //関数はarray_replace()と同じです。違いは、array_replace_recursive() は $array の構造を変更せずに多次元配列を操作できるのに対し、array_replace() は最終的に 1 次元配列を返すことです $base = array('citrus' => array( "オレンジ") , 'ベリー' => array("ブラックベリー", "ラズベリー"), ); $replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry')); printr(array_replace_recursive($base, $replacements)); echo ' '; //------------------------------------------------ //array_reverse($arr) //配列内のキーを逆順に配置します echo ' '; //------------------------------------------------ //array_search($value, $array) // $array 配列内の値 $value を持つキー名を検索します //見つからない場合は false を返します // $array 配列に複数の $value がある場合、最初に一致したキーのみが返されます //この関数は array_keys() に似ていますが、違いは戻り値にあります。array_search() は一致するキー名のみを返しますが、array_keys() は一致するすべてのキーで構成される 1 次元配列を返すことができます echo ' '; //----------------------------------------------- //array_shift($arr) //現在の $arr 配列の最初のキーを削除し、後続の数値インデックスを再配置します (ただし、元の順序は変更しません)。数値以外のインデックスは変更されません。 //この関数は array_pop() に似ていますが、異なる点は、array_pop() は最後の関数を削除し、array_shift() は先頭を削除することです echo ' '; //----------------------------------------------- //array_slice($arr, $offset, $length=0, false) 配列インターセプト // 現在の $arr 配列の $offset から始まる $length 要素/キーの合計を返し、新しい配列を形成して返す // $offset または $length が負の数の場合、オフセットは逆方向になります // substring() の文字列インターセプトと似た感じです //PHP マニュアルの例を直接使用します $input = array("a", "b", "c", "d", "e"); $output = array_slice($input, 2); // "c"、"d"、および "e" を返します $output = array_slice($input, -2, 1) // "d" を返します ; $output = array_slice($input, 0, 3); // 「a」、「b」、「c」を返します // 配列キーの違いに注意してください printr(array_slice($input, 2, -1)); printr(array_slice($input, 2, -1, true)); echo ' '; //----------------------------------------------- //array_spslice($arr, $offset, $length) //array_slice() 関数の逆で、この関数は $offset と $length の間の要素を削除します 設定を解除($arr) echo ' '; //----------------------------------------------- //array_sum($arr) // $arr 配列内のすべての値を合計して累積します。数値型以外の場合は変換を試みますが、変換後はほとんどが 0 になります //この関数は、array_product() と同様に、配列の 1 レベルにのみ影響します $arr = 配列( 45,56, 'a', 'b'=>getArr(1, 2), ); プリンター($arr); エコー 'array_sum($arr)',array_sum($arr); echo ' '; //----------------------------------------------- //array_values($arr) // $arr 配列の値を抽出して新しい配列を形成します $arr = 配列( 'k1'=>45、'k2'=>56、'k3'=>'a'、'b'=>getArr(1, 2)、 ); printr(array_values($arr)); echo ' '; //----------------------------------------------- //array_unique($arr) は配列をソートします // $arr 配列の重複を除去し、重複する値をフィルターします。複数の同一の値は最初の値のみを保持します echo ' '; //----------------------------------------------- //array_walk($arr, callback[コールバック関数], $sel_perfix='') // 現在の配列内の各キーを処理のためにコールバック関数に送信します // $sel_perfix パラメータを追加した場合、コールバック関数は 3 つのパラメータを受け取る必要もあります。そうでない場合は、エラーが報告されます //この関数は 1 つのレイヤーにのみ影響します $fruits = array("d" => "レモン", "a" => "オレンジ", "b" => "バナナ", "c" => "リンゴ"); 関数 test_alter(&$item1, $key, $prefix) { $item1 = "$プレフィックス: $item1"; } printr(array_walk($fruits, 'test_print')); array_walk($fruits, 'test_alter', 'fruit'); echo ' '; //----------------------------------------------- //array_walk_recursive() //この関数は array_alk(); に似ていますが、$arr の配列の各レベルを再帰し、返された配列は元の配列の構造を変更しません echo ' '; //----------------------------------------------- //arsort($arr) //配列のキー名に従って配列を並べ替えると、文字を並べ替えることができます。ソートに失敗した場合は null が返されます echo ' '; //----------------------------------------------- //asort() //この関数は arsort() に似ていますが、異なる点は次のとおりです: asort() は値を並べ替えます 配列ループ
配列の「書き込み」操作はループ内で実行されるため、while は foreach よりも高速です。
さらに、foreach は配列書き込み操作の処理には適していないため、ほとんどの場合、foreach ($array as $key => $value) の形式のコードは while (list( $key) = each($array))。
|
http://www.bkjia.com/PHPjc/629148.html