サーチ…


配列の各要素に関数を適用する

配列のすべての項目に関数を適用するには、 array_map()使用します。これにより、新しい配列が返されます。

$array = array(1,2,3,4,5);
//each array item is iterated over and gets stored in the function parameter.
$newArray = array_map(function($item) {
    return $item + 1;
}, $array);

$newArrayarray(2,3,4,5,6);

無名関数を使用する代わりに、名前付き関数を使用することができます。上記は次のように書くことができます:

function addOne($item) {
    return $item + 1;
}

$array = array(1, 2, 3, 4, 5);
$newArray = array_map('addOne', $array);

名前付き関数がクラスメソッドである場合、関数の呼び出しには、メソッドが属するクラスオブジェクトへの参照が含まれていなければなりません。

class Example {
    public function addOne($item) {
        return $item + 1;
    }

    public function doCalculation() {
        $array = array(1, 2, 3, 4, 5);
        $newArray = array_map(array($this, 'addOne'), $array);
    }
}

配列の各項目に関数を適用する別の方法は、 array_walk()array_walk_recursive()です。これらの関数に渡されるコールバックは、キー/インデックスと各配列項目の値の両方をとります。これらの関数は新しい配列を返さず、代わりに成功のブール値を返します。たとえば、すべての要素を単純な配列に出力するには:

$array = array(1, 2, 3, 4, 5);
array_walk($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5"

コールバックのvalueパラメータは参照渡しで、元の配列の値を直接変更できます。

$array = array(1, 2, 3, 4, 5);
array_walk($array, function(&$value, $key) {
    $value++;
});

$array nowはarray(2,3,4,5,6);

ネストされた配列の場合、 array_walk_recursive()はそれぞれのサブ配列に深く入ります:

$array = array(1, array(2, 3, array(4, 5), 6);
array_walk_recursive($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5 6"

注意array_walkおよびarray_walk_recursive array_walkと、配列項目の値は変更できますが、キーは変更できません。参照によってキーをコールバックに渡すことは有効ですが、効果はありません。

配列をチャンクに分割する

array_chunk()は 、配列をチャンクに分割します。

一次元配列に従っているとしましょう

$input_array = array('a', 'b', 'c', 'd', 'e');

上記のPHP配列でarray_chunk()を使用すると、

$output_array = array_chunk($input_array, 2);

上のコードは、2つの配列要素のチャンクを作成し、次のように多次元配列を作成します。

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)

配列のすべての要素がチャンクサイズで均等に分割されていない場合、出力配列の最後の要素は残りの要素になります。


2番目の引数を1より少なく指定すると、 E_WARNINGがスローされ、出力配列はNULLになります

パラメータ詳細
$ array(配列) 入力配列、作業する配列
$ size(int) 各チャンクのサイズ(整数値)
$ preserve_keys(boolean)(オプション) 出力配列にキーを保持させたい場合はTRUEに設定し、そうでない場合はFALSEにします

配列を文字列に埋め込む

implode()はすべての配列値を結合しますが、すべてのキー情報を失います。

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", $arr); // AA BB CC

Implodingキーは、array_keys array_keys()コールを使用して実行できます。

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", array_keys($arr)); // a b c

値のあるキーのインプリメンテーションは複雑ですが、機能スタイルを使用して実行できます。

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", array_map(function($key, $val) { 
    return "$key:$val"; // function that glues key to the value
}, array_keys($arr), $arr)); 

// Output: a:AA b:BB c:CC

array_reduce

array_reduceは配列を単一の値に減らします。基本的に、 array_reduceは、最後の反復の結果を持つすべての項目を通過し、次の反復まで新しい値を生成します。

使用法: array_reduce ($array, function($carry, $item){...}, $defaul_value_of_first_carry)

  • $ carryは、最後の繰り返しからの結果です。
  • $ itemは、配列内の現在の位置の値です。

配列の合計

$result = array_reduce([1, 2, 3, 4, 5], function($carry, $item){
    return $carry + $item;
});

結果: 15

配列の中で最大の数

$result = array_reduce([10, 23, 211, 34, 25], function($carry, $item){
        return $item > $carry ? $item : $carry;
});

結果: 211

すべてのアイテムが100以上ですか?

$result = array_reduce([101, 230, 210, 341, 251], function($carry, $item){
        return $carry && $item > 100;
}, true); //default value must set true

結果: true

100未満のアイテムですか?

$result = array_reduce([101, 230, 21, 341, 251], function($carry, $item){
        return $carry || $item < 100;
}, false);//default value must set false

結果: true

implode($ array、$ piece)のように

$result = array_reduce(["hello", "world", "PHP", "language"], function($carry, $item){
        return !$carry ? $item : $carry . "-" . $item ;
});

結果: "hello-world-PHP-language"

implodeメソッドを作成すると、ソースコードは次のようになります。

function implode_method($array, $piece){
    return array_reduce($array, function($carry, $item) use ($piece) {
            return !$carry ? $item : ($carry . $piece . $item);
    });
}

$result = implode_method(["hello", "world", "PHP", "language"], "-");

結果: "hello-world-PHP-language"

list()を使用して配列を「破壊する」

変数値のリストを配列に素早く割り当てるには、 list()を使用しますcompact()も参照してください。

// Assigns to $a, $b and $c the values of their respective array elements in           $array with keys numbered from zero
list($a, $b, $c) = $array;

PHP 7.1(現在ベータ版)では、 短いリスト構文を使用することができます

// Assigns to $a, $b and $c the values of their respective array elements in $array with keys numbered from zero
[$a, $b, $c] = $array;

// Assigns to $a, $b and $c the values of the array elements in $array with the keys "a", "b" and "c", respectively
["a" => $a, "b" => $b, "c" => $c] = $array;

配列の値をプッシュする

要素を配列にプッシュするには、2つの方法があります: array_push$array[] =


array_pushは次のように使用されます:

$array = [1,2,3];
$newArraySize = array_push($array, 5, 6); // The method returns the new size of the array
print_r($array); // Array is passed by reference, therefore the original array is modified to contain the new elements

このコードは次のように出力されます:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 5
    [4] => 6
)

$array[] =は次のように使用されます:

$array = [1,2,3];
$array[] = 5;
$array[] = 6;
print_r($array);

このコードは次のように出力されます:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 5
    [4] => 6
)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow