PHP多维数组搜索,其中键等于并返回主键

时间:2018-09-18 10:03:23

标签: php arrays

我在php中有一个类似于以下结构的数组:

[0] => Array
    (
        [id] => 1242
        [name] => John
        [archived] => 
    )


[1] => Array
    (
        [id] => 1343
        [name] => Ben
        [archived] => 1 
    )


[2] => Array
    (
        [id] => 1149
        [name] => Mark
        [archived] => 
    )

有没有一种方法可以搜索并取消设置存档等于1的主键的整个数组元素?因此,例如在此数据示例中,键1具有一个称为存档等于1的子键,因此可以取消设置键1的整个数组元素吗?

3 个答案:

答案 0 :(得分:1)

这应该有效。请注意,未设置是在原始数组上调用的,而不是$aInner

$aArray = array(
    0 => array('id' => 1242, 'name' = "John", 'archived' => 1),
    1 => array('id' => 1342, 'name' = "Ben", 'archived' => 0)
);

// loop over each element in the array, if its set using the current iPos, unset the key from array
foreach ($aArray as $iPos => $aInner) {
    if($aInner['archived'] === 1){
        unset($aArray[$iPos]);
        continue;        
    }
}

答案 1 :(得分:1)

您可以使用array_filter创建可以满足您的条件的新数组,例如:

$items = array_filter($arr, function($value, $key) {
    return $value['archived'] !== 1
}, ARRAY_FILTER_USE_BOTH);

答案 2 :(得分:0)

您可以使用array_filter根据您的数据创建一个新数组:

$data = [['id' => 1, 'data' => 42, 'archived' => false],
         ['id' => 2, 'data' => 43, 'archived' => true]];
$filtered = array_filter($data, function ($var){ return !$var['archived'];});