2

ケースに一致するサブ要素を持つ特定の要素のみを選択する新しい配列を作成するためのソートの選択関数のタイプはありますか? たとえば、[type] が "A" の場所を含む配列のみが必要なため、[1] と [2] のみを含む最終的な配列を作成します。

[1]  
    [type] => A
    [month] => January

[2]
    [type] => A
    [month] => February

[3]
    [type] => B
    [month] => March

ありがとう!

4

4 に答える 4

2
function is_type_a($element) { return $element['type'] === 'A'; }
$fiteredArray = array_filter($inputArray, 'is_type_a');

PHP 5.4 を使用している場合は、無名関数を使用してより簡潔に行うことができます。

于 2012-05-04T01:20:28.870 に答える
1

その配列を必要なエントリに減らすことができます。これにより元のキーが保持されることに注意してください。そのため、プロセス中に 2 が設定されていない場合、キーとして 0、1、および 3 を持つ配列になる可能性があります。

foreach( $array as $key => &$value ){
  if ( $value['type'] != 'A' )
    unset( $array[ $key ] );
}

デモ: http://codepad.org/OG5rguJ8

もう 1 つの方法はarray_filter、配列を一度に 1 エントリずつ繰り返し削減するために使用することです。

function callbackFunc( $val ) {
    return $val['type'] == 'A';
}

$result = array_filter( $array, callbackFunc );

array_filterフィルタリングしたい配列を渡すメソッドと、作成したフィルタリング関数を呼び出します。$valこの関数は、現在の要素を変数として扱い、配列内の各要素に対して実行されます。

その変数の型キーが=="A" の値にマップされている場合は、TRUEが返されます。それ以外の場合FALSEは返されます。関数が を返すと、評価された値が配列TRUEに送信されます。$resultが返された場合、値は配列FALSEにプッシュされません。$result

前のオプションと同様に、このメソッドもキー値を保持します。

デモ: http://codepad.org/todHBZo7

于 2012-05-04T01:46:29.527 に答える
0
function select_custom($array,$param)
{
    foreach($array as $k=>$v)
    {
       if($v['type']==$param)
       {
          $returnArray[] = $v; 
       }
    }
    return $returnArray;
}
于 2012-05-03T23:50:32.847 に答える
0

選択したい要素のインデックスがわかっている場合は array_splice() を使用できます。以前の回答で示唆されていない場合は、ループする必要があります

于 2012-05-04T01:48:46.843 に答える