【问题标题】:Removing array key from multidimensional Arrays php从多维数组php中删除数组键
【发布时间】:2016-04-18 18:48:21
【问题描述】:

我有这个数组

 $cart= Array(
      [0] => Array([id] => 15[price] => 400)
      [1] => Array([id] => 12[price] => 400)
    )

我需要的是根据一些值删除数组键,像这样

$value = 15;

值为 15 只是我需要检查数组并删除该值是否存在于 ID 中的示例?

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    array_filter 非常适合从数组中删除不需要的东西。

    $cart = array_filter($cart, function($x) { return $x['id'] != 15; });
    

    如果您想使用变量来确定要删除哪个 id 而不是将其包含在 array_filter 回调中,您可以像这样在函数中 use 您的变量:

    $value = 15;
    $cart = array_filter($cart, function($x) use ($value) { return $x['id'] != $value; });
    

    【讨论】:

    • 这个答案应该被接受。没有人愿意为单个任务使用循环
    【解决方案2】:

    PHP中有很多奇怪的数组函数,但是其中很多请求都是用非常简单的foreach循环解决的……

    $value = 15;
    foreach ($cart as $i => $v) {
        if ($v['id'] == $value) {
            unset($cart[$i]);
        }
    }
    

    如果 $value 根本不在数组中,则不会发生任何事情。如果 $value 在数组中,则整个索引将被删除(取消设置)。

    【讨论】:

    • 如果用 $cart 替换 $a 令人困惑,这可能会让您头疼。
    【解决方案3】:

    你可以使用:

    foreach($array as $key => $item) {
      if ($item['id'] === $value) {
        unset($array[$key]);
      }
    }
    

    【讨论】:

    • 这行不通,因为unset($item)没有移除数组元素;它只会取消对它的引用。
    • 如果你创建function clearArray($value){ ... },你以后不需要更多使用 $item,顺便说一句,我认为更好的解决方案是使用 php 中的array_filter 函数
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2016-01-03
    • 2018-12-26
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多