代码之家  ›  专栏  ›  技术社区  ›  Ahmed

PHP多维数组搜索key等于并返回main key

  •  1
  • Ahmed  · 技术社区  · 6 年前

    我在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有一个子键,名为archived equals 1,因此可以取消设置键1的整个数组元素?

    3 回复  |  直到 6 年前
        1
  •  0
  •   gogaz    6 年前

    你可以用 array_filter 要从数据创建新数组,请执行以下操作:

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

    $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;        
        }
    }
    
        3
  •  1
  •   Maksym Fedorov    6 年前

    你可以用 array_filter 要创建满足您的条件的新阵列,例如:

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