0

背景

我有两个名为$attributesand的数组$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数组是从我的数据库中的数据生成的,如果其中一个元素为空,则不返回包含其他属性的图形,这是我想要的。

我的问题

我想知道第一个数组 ( attributes) 是否在第二个数组 ( ) 中有任何元素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);

输出 :

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

    [pie_chart] => Array
        (
        )

    [line_chart] => Array
        (
        )

)

$res是一个数组,其中包含$grahp带有键的属性,如果不存在,它将为空。

于 2013-03-04T04:32:35.863 回答