phpベースの配列のマージ、分割、区別値関数セット


PHP配列の結合、分割、区別取値関数セット
PHPの配列機能が強いと言われていますが、本当にプロジェクトに使われている中でしか感じられません.少なくとも、今は徐々にその奥義に気づいていると思います.
連結配列には、次の3つの関数があります.
1.array_combine()
2つのパラメータ配列を持ち、パラメータ配列1の値を新しい配列のキーとし、パラメータ配列2の値を新しい配列の値とする.簡単です.
例:
   
   
   
   
  1. php   
  2. $a = array('green', 'red', 'yellow');   
  3. $b = array('avocado', 'apple', 'banana');   
  4. $c = array_combine($a, $b);  
  5.  
  6. print_r($c);   
  7. ?> 
  8.  

上記の例では、次のように出力されます.
 
   
   
   
   
  1. Array   
  2. (   
  3. [green] => avocado   
  4. [red] => apple   
  5. [yellow] => banana   
  6. )   

2.array_merge()
2つのパラメータ配列を持ち,配列2を配列1の後ろに簡単に追加して新しい配列を構成する.
例:
   
   
   
   
  1. php   
  2. $arrayarray1 = array("color" => "red", 2, 4);   
  3. $arrayarray2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);   
  4. $result = array_merge($array1, $array2);   
  5. print_r($result);   
  6. ?>    
  7.  

上記の例では、次のように出力されます.
   
   
   
   
  1. Array   
  2. (   
  3. [color] => green   
  4. [0] => 2   
  5. [1] => 4   
  6. [2] => a   
  7. [3] => b   
  8. [shape] => trapezoid   
  9. [4] => 4   
  10. )   

3.array_merge_recursive()
上記の関数と同様に、追加時に追加するキーが存在することを発見した場合、array_merge()の処理は、前のキー値を上書きし、array_merge_recursive()の処理は,サブ配列を再構成し,重複するキーの値を新しい数値配列に構成する.
例:
   
   
   
   
  1. $ar1 = array("color" => array("favorite" => "red"), 5);   
  2. $ar2 = array(10, "color" => array("favorite" => "green""blue"));   
  3. $result = array_merge_recursive($ar1$ar2);   
  4. ?>   
  5.  

前例では出力
   
   
   
   
  1. $result:  
  2.  
  3. Array   
  4. (   
  5. [color] => Array   
  6. (   
  7. [favorite] => Array   
  8. (   
  9. [0] => red   
  10. [1] => green   
  11. )   
  12.  
  13. [0] => blue   
  14. )   
  15.  
  16. [0] => 5   
  17. [1] => 10   
  18. )   

分割配列には2つの関数があります.
1.array_slice()
3つのパラメータを持ち、パラメータ1はターゲット配列、パラメータ2はoffset、パラメータ3はlengthである.ターゲット配列からoffsetからlengthの長さのサブ配列を取り出す役割を果たす.
offsetが正数の場合、開始位置は配列の先頭からoffsetを調べ、offsetが負数の場合は配列の末尾からoffsetを調べる.lengthが正数である場合、取り出したサブ配列要素の個数はlengthであることは間違いなく、lengthが負である場合、サブ配列はoffsetから配列先頭count(ターゲット配列)-|length|まで終了する.特に、lengthが空の場合、終了位置は配列の最後にある.
例:
   
   
   
   
  1. php   
  2. $input = array("a", "b", "c", "d", "e");   
  3.  
  4. $output = array_slice($input, 2); // returns "c", "d", and "e"   
  5. $output = array_slice($input, -2, 1); // returns "d"   
  6. $output = array_slice($input, 0, 3); // returns "a", "b", and "c"   
  7.  
  8. // note the differences in the array keys   
  9. print_r(array_slice($input, 2, -1));   
  10. print_r(array_slice($input, 2, -1, true));   
  11. ?>   
  12.  

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

2.array_splice()
3つのパラメータを持ち、offsetから長さlengthのサブ配列を削除する役割を果たします.
例:
   
   
   
   
  1. $input = array("red""green""blue""yellow");   
  2. array_splice($input, 2);   
  3. // $input is now array("red", "green")   
  4.  
  5. $input = array("red""green""blue""yellow");   
  6. array_splice($input, 1, -1);   
  7. // $input is now array("red", "yellow")   
  8.  
  9. $input = array("red""green""blue""yellow");   
  10. array_splice($input, 1, count($input), "orange");   
  11. // $input is now array("red", "orange")   
  12.  
  13. $input = array("red""green""blue""yellow");   
  14. array_splice($input, -1, 1, array("black""maroon"));   
  15. // $input is now array("red", "green",   
  16. // "blue", "black", "maroon")   
  17.  
  18. $input = array("red""green""blue""yellow");   
  19. array_splice($input, 3, 0, "purple");   
  20. // $input is now array("red", "green",   
  21. // "blue", "purple", "yellow");   
  22. ?>    

値の区別関数は4つあります.
1.array_intersect()
パラメータが不定で、すべて配列であり、すべての配列の共通要素の値からなる配列を返します.配列のキーは最初の配列のキーによって与えられます.
例:
   
   
   
   
  1. php   
  2. $arrayarray1 = array("a" => "green", "red", "blue");   
  3. $arrayarray2 = array("b" => "green", "yellow", "red");   
  4. $result = array_intersect($array1, $array2);   
  5. ?>    
  6.  

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

2.array_intersect_assoc()
前の関数に基づいて、すべての配列のキーと値が同じキー値のペアを返します.
例:
   
   
   
   
  1. $array1 = array("a" => "green""b" => "brown""c" => "blue""red");   
  2. $array2 = array("a" => "green""yellow""red");   
  3. $result_array = array_intersect_assoc($array1$array2);   
  4. ?>    
  5.  

上記の例では、次のように出力されます.
   
   
   
   
  1. Array   
  2. (   
  3. [a] => green   
  4. )    

3.array_diff()
複数の配列を持ち、最初の配列にあり、後ろの配列にないすべての値からなる新しい配列を返します.対応するキーは最初の配列から取られます.
例:
   
   
   
   
  1. $array1 = array("a" => "green""red""blue""red");   
  2. $array2 = array("b" => "green""yellow""red");   
  3. $result = array_diff($array1$array2);   
  4.  
  5. print_r($result);   
  6. ?>   
  7.  

上記の例では、次のように出力されます.
   
   
   
   
  1. Array   
  2. (   
  3. [1] => blue   
  4. )    

4.array_diff_assoc()
前の関数に基づいて、一致値だけでなくキーも一致する必要があります.
例:
   
   
   
   
  1. $array1 = array ("a" => "green""b" => "brown""c" => "blue""red");   
  2. $array2 = array ("a" => "green""yellow""red");   
  3. $result = array_diff_assoc($array1$array2);   
  4. ?>   
  5.  

上記の例では、次のように出力されます.
   
   
   
   
  1. Array   
  2. (   
  3. [b] => brown   
  4. [c] => blue   
  5. [0] => red   
  6. )