2012-01-31 81 views
1

我想编辑一个插件,它是获取一个多维数组,然后将其分解为一个foreach语句并对结果数据进行处理。获取一个多维数组

我想要做的是编辑数组,然后它到达foreach语句。我想查看是否存在键/值组合,如果它确实删除了整个子数组,然后重新构造数组并将其传递给一个新变量。

当前变量

$arrayslides 

返回多个子阵,看起来像这样的事情(我删除为了简洁起见不重要变量):

Array ( 
    [0] => Array ( 
    [slide_active] => 1 
) 
    [1] => Array ( 
    [slide_active] => 0 
) 
) 

我想要做的就是外观和看看这些子数组中的一个是否包含值为0的关键slide_active。如果它包含零值,我想要将整个子阵列完全转储,然后将多维数组重新转换回变量

$arrayslides 

我已经尝试了几个数组函数,但没有任何运气。有什么建议么?

+6

听起来像array_filter()用一个简单的回调测试slide_active – 2012-01-31 11:44:35

+0

表面证据@标记添加它作为答案。 – kapa 2012-01-31 11:46:48

+0

难道你不能改变提取数据的SQL查询吗?会更清洁。 – kapa 2012-01-31 11:47:31

回答

3
$arrayslides = array(0 => array ( 'slide_active' => 1, 'other_data' => "Mark"), 
        1 => array ( 'slide_active' => 0, 'other_data' => "ABCDE" ), 
        2 => array ( 'slide_active' => 1, 'other_data' => "Baker" ), 
        3 => array ( 'slide_active' => 0, 'other_data' => "FGHIJ" ), 
        ); 


$matches = array_filter($arrayslides, function($item) { return $item['slide_active'] == 1; }); 

var_dump($matches); 

PHP> = 5.3.0

+0

感谢Mark..it进展良好 – Arun 2012-01-31 13:02:37

0

我知道它不是那么有效,但仍

foreach ($arraySlides as $key => $value) 
{ 
    if(in_array('0', array_values($value)) 
     unset($arraySlides[$key]); 
} 
+0

谢谢Uday,尽管它效率不高,仍然是它的一个选择。 – Arun 2012-01-31 13:04:33