php配列マージ、分割、置換、組合せ

5590 ワード

php配列の操作(マージ、分割、削除、ソート)
1.配列のマージarray_merge ( array $array1 [, array $... ] )
array_merge()は、1つ以上の配列のセルを結合し、1つの配列の値が前の配列の後ろに付加されます.結果としての配列を返します.
入力した配列に同じ文字列のキー名がある場合、キー名の後ろの値は前の値を上書きします.ただし、配列に数値キー名が含まれている場合、後の値は元の値を上書きするのではなく、後に付加されます.
配列が1つしか与えられず、配列が数値インデックスである場合、キー名は連続的に再インデックスされます.
比較:既存の配列を完全に保持し、新しい配列だけを後ろに添付したい場合は、+演算子を使用します.
 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
var_dump($result);
?>

最初の配列のキー名は保持されます.2つの配列に同じキー名が存在する場合、1番目の配列の同じキー名の要素は保持され、2番目の配列の要素は無視され、次のように出力されます.
array(5) {
  [0]=>
  string(6) "zero_a"
  [2]=>
  string(5) "two_a"
  [3]=>
  string(7) "three_a"
  [1]=>
  string(5) "one_b"
  [4]=>
  string(6) "four_b"
}
array_combine ( array $keys , array $values )
キー名としてkeys配列からの値、values配列からの値を対応する値とするarrayを返します.
2.配列を再帰的にマージ(配列追加)array array_merge_recursive ( array $array1 [, array $... ] )
array_merge_recursive()は、1つ以上の配列のセルを結合し、1つの配列の値が前の配列の後ろに付加されます.結果としての配列を返します.
入力した配列に同じ文字列キー名がある場合、これらの値は1つの配列にマージされ、再帰されます.したがって、値自体が1つの配列である場合、この関数は対応するエントリに従って別の配列にマージされます.ただし、配列に同じ配列キー名がある場合、後の値は元の値を上書きするのではなく、後に付加されます.
array_mergeとarray_merge_recursiveは、入力配列の文字列キー名がすでにマージする初期配列に存在する場合、2つの関数が異なる処理を行う点で、マージ配列です.array_merge()は、前に存在するキー値ペアを上書きし、array_merge_recursive()は、2つの値を1つの行に結合して新しい配列にし、既存のキーを配列キー名公式サイトの例とします.
 array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

出力:
Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

3.配列要素の置換array array_replace ( array $array1 , array $array2 [, array $... ] )
array_replace()関数は、array 1配列の値を、後の配列要素と同じkeyの値で置き換えます.1つのキーが最初の配列と2番目の配列の両方に存在する場合、その値は2番目の配列の値に置き換えられます.キーが2番目の配列に存在し、最初の配列に存在しない場合は、最初の配列にこの要素が作成されます.1つのキーが最初の配列にのみ存在する場合、キーは変更されません.複数の置換配列が渡されると、それらは順番に処理され、後の配列は前の値を上書きします.
array_replace()は再帰的ではありません.2番目の配列のタイプにかかわらず、1番目の配列の値を置き換えます.
同じようにarrayを再帰的に置き換えることもあります.replace_recursive array array_replace_recursive ( array $array1 , array $array2 [, array $... ] )
array_replace_recursive()配列array 1の値を、後続の配列要素の値で置き換えます.1つのキーが最初の配列と2番目の配列の両方に存在する場合、その値は2番目の配列の値に置き換えられます.キーが2番目の配列に存在し、最初の配列に存在しない場合は、最初の配列にこの要素が作成されます.1つのキーが最初の配列にのみ存在する場合、キーは変更されません.複数の置換配列が渡されると、それらは順番に処理され、後の配列は前の値を上書きします.
**上記の3つの状況について説明します.
  • 被置換配列と置換配列には同じキーが存在する、被置換配列における対応する値は
  • に置換される.
  • 置換配列に固有のキーは影響を受けない
  • .
  • 置換配列に固有のキーは置換配列**
  • に影響しません.
    array_replace_recursive()は再帰的です.配列を巡回し、同じ処理を配列の内部値に適用します.
    配列array 1の値がスカラーである場合、その値は2番目の配列array 2の値に置き換えられ、スカラーまたは配列である可能性があります.array 1とarray 2の値が配列である場合、array_replace_recursive()関数は、それぞれの値を再帰的に置き換えます.
     array( "orange") , 'berries' => array("blackberry", "raspberry"), );
    $replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));
    
    $basket = array_replace_recursive($base, $replacements);
    print_r($basket);
    
    $basket = array_replace($base, $replacements);
    print_r($basket);
    ?>
    //  :
    Array
    (
        [citrus] => Array
            (
                [0] => pineapple
            )
    
        [berries] => Array
            (
                [0] => blueberry
                [1] => raspberry
            )
    
    )
    Array
    (
        [citrus] => Array
            (
                [0] => pineapple
            )
    
        [berries] => Array
            (
                [0] => blueberry
            )
    
    )
    
    

    Example #2 array_replace_recursive()とその再帰表現
     array("orange") , 'berries' => array("blackberry", "raspberry"), 'others' => 'banana' );
    $replacements = array('citrus' => 'pineapple', 'berries' => array('blueberry'), 'others' => array('litchis'));
    $replacements2 = array('citrus' => array('pineapple'), 'berries' => array('blueberry'), 'others' => 'litchis');
    
    $basket = array_replace_recursive($base, $replacements, $replacements2);
    print_r($basket);
    
    ?>
    //  :
    Array
    (
        [citrus] => Array
            (
                [0] => pineapple
            )
    
        [berries] => Array
            (
                [0] => blueberry
                [1] => raspberry
            )
    
        [others] => litchis
    )
    

    4.配列の分割array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
    array_slice()はoffsetパラメータとlengthパラメータに基づいて指定されたarray配列のシーケンスを返します.offsetとlengthはいずれも負の数であってもよい.phpシステム関数の法則:この場合正数は順序を表し,負数は位置を表す.
    比較:array_splice-配列の一部を除去し、他の値で置き換えます.array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] ) input配列でoffsetとlengthで指定されたセルを削除し、replacementパラメータが指定されている場合は、そのセルで置き換えます.
    注意inputの数値キー名は保持されません.