【问题标题】:php get array element and remove it from array at oncephp获取数组元素并立即将其从数组中删除
【发布时间】:2014-07-18 09:47:39
【问题描述】:

我有数组:

$arr = array(
    'a' => 1,
    'b' => 2,
    'c' => 3
);

是否有内置的 php 函数通过键获取数组值然后从该数组中删除元素?

我知道 array_shift 和 array_pop 函数,但我需要通过自定义键获取元素,而不是第一个/最后一个元素。比如:

$arr; // 'a'=>1, 'b'=>2, 'c'=>3
$elem = array_shift_key($arr, 'b');
echo $elem; // 2
$arr; // 'a'=>1, 'c'=>3

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    不确定原生方式,但这应该可以:

    function shiftByKey($key, &$array) {
        if (!array_key_exists($key, $array)) {
            return false;
        }
    
        $tmp = $array[$key];
        unset($array[$key]);
    
        return $tmp;
    }
    

    编辑:更新它以便数组通过引用传递。否则你的数组保持不变。

    【讨论】:

    • 好的,谢谢!此功能可按我的需要工作。我想在日常任务中这种常见操作存在什么内置的 php 函数。我认为现在最好的方法是继续使用标准访问运算符 [] 和未设置的语法..
    【解决方案2】:

    据我所知,没有什么比这更接近的了。虽然可以很容易地编写:

    function array_shift_key(array &$array, $key) {
        $value = $array[$key];
        unset($array[$key]);
        return $value;
    }
    

    如果您关心,请先验证该键是否存在于数组中,如果不存在,则根据您的错误处理理念执行某些操作。否则,您只会收到不存在密钥的标准 PHP 通知。

    【讨论】:

      【解决方案3】:
      function array_shift_key(array &$input, $key) {
          $value = null;
      
          // Probably key presents with null value
          if (isset($input[$key]) || array_key_exists($key, $input)) {
              $value = $input[$key];
              unset($input[$key]);
          }
      
          return $value;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 2019-04-07
        • 2021-11-13
        • 1970-01-01
        • 2015-06-14
        • 2011-07-23
        • 1970-01-01
        相关资源
        最近更新 更多