0

バックグラウンド

と という名前の 2 つの配列が$attributesあり$graphsます。属性には、次のようなデータが保持されます。

$attributes = array('lat', 'long', '');

一方、$graphs次のようなサブ配列が含まれています。

$graphs = array(
    'bar_chart'  => array('gender', `lat`, `long`),
    'pie_chart'  => array('gender', 'location', 'pos_sentiment', 'neg_sentiment'),
    'line_chart' => array('pos_sentiment', 'neg_sentiment')
);

問題

私の$attributes配列はデータベース内のデータから生成され、要素の 1 つが空の場合、他の属性を含むグラフは返されません。

私の質問

attributes最初の配列 ( ) が 2 番目の配列 ( ) に要素を持っているかどうかを知りたいですgraphs。空の文字列を考慮したくありません。

アップデート

array_filter関数が空の文字列を削除することに気付いたので、それを上記の自分のコードに適用すると、希望する結果が得られました。

コードは次のとおりです。

    foreach ($graphs as $key => $array)
    {
        if (count(array_intersect(array_filter($attributes), $array)) == count(array_filter($attributes)))
        {
            $solved[] = $key;
        }
    }
4

2 に答える 2

0

人々:

Array
  (
   [0] => 3
   [1] => 20
  )

指名手配犯:

Array
(
[0] => 2
[1] => 4
[2] => 8
[3] => 11
[4] => 12
[5] => 13
[6] => 14
[7] => 15
[8] => 16
[9] => 17
[10] => 18
[11] => 19
[12] => 20
)

使用できますarray_intersect().

$result = !empty(array_intersect($people, $criminals));
于 2013-03-04T04:24:39.010 に答える
0

これを試して :

$attributes = array('lat', 'long', '');

$graphs = array(
    'bar_chart'  => array('gender', 'lat', 'long'),
    'pie_chart'  => array('gender', 'location', 'pos_sentiment', 'neg_sentiment'),
    'line_chart' => array('pos_sentiment', 'neg_sentiment')
);

$res  = array();
foreach($graphs as $key=>$val){
    $res[$key]   = array_intersect($attributes, $val);
}

echo "<pre>";
print_r($res);

出力:

Ar

ray
(
    [bar_chart] => Array
        (
            [0] => lat
            [1] => long
        )

    [pie_chart] => Array
        (
        )

    [line_chart] => Array
        (
        )

)

$resこれは、キーとともに存在する属性を含む配列です$grahp。存在しない場合は null になります。

于 2013-03-04T04:32:35.863 に答える