-4

私はこのような配列を持っています:

Array
(
[0] => Array
    (
        [id] => 1
        [name] => Product 1
        [color] => green
    )

[1] => Array
    (
        [id] => 2
        [1] => Product 12
        [color] => red
    )

[2] => Array
    (
        [id] => 3
        [1] => Product 3
        [color] => blue
    )
)

色の値に基づいてデータを除外できるようにしたいと考えています。次のような関数:

function filter_data($array, $color) {

}

$arrayと引数を文字列として渡すことができ$colorますが、結果はすべての項目が青色を含む配列になります。

4

3 に答える 3

1

おそらく、 foreach ループの使用方法を確認する必要があります。PHPを学びたいなら、これは学ぶことが非常に重要です。

function filter_data($array, $color) {
  $results = array();
  foreach ($array as $data) {
    if ($data['color'] == $color) {
      $results[] = $data;
    }
  }
  return $results;
}

この関数は単純に 内のすべての値を繰り返し処理し、$array各サブ配列をチェックcolorして、指定された と一致するかどうかを確認します$color

于 2013-06-16T02:03:14.590 に答える
1

ここにあなたのための機能があります....

配列、フィルターするキー/フィールド、検索する検索語を入力できます...

/*
*@param $arr = array  //array of your choosing
*@param $field  string  //key value of array to search through 
*@param $item   string  //Search term
*@return array  //returns filtered array
*/

function search($arr, $field, $item){
 $result = array();
 foreach ($arr as $val) {
     if ($val[$field] == $item) {
    $result[] = $val;
  }
 }
 return $result;
 }

あとはそのまま使って…

search($yourarray, "color","blue");
于 2013-06-16T02:13:17.117 に答える
1

データが次のようになっていると仮定します。

$data = array(
    array('id' => 1, 'name' => 'Product 1', 'color' => 'green'),
    array('id' => 2, 1 => 'Product 12', 'color' => 'red'),
    array('id' => 3, 1 => 'Product 3', 'color' => 'blue'),
);

それをループして、に基づく配列のみを返すことができますcolor=__desired_color__

$final = array();
foreach ($data as $dat) {
    if ($dat['color'] == "blue") {
        $final[] = $dat;
    }
}

これを関数にする方法を知っていることを願っています。幸運を!

于 2013-06-16T01:49:51.687 に答える