【问题标题】:How to remove particular value in array_map in php如何在php中删除array_map中的特定值
【发布时间】:2018-11-23 05:49:21
【问题描述】:

下面是我的 array_map 示例,

$page_names = ArrayHelper::map($pagesList['data'], 'id', 'name');

在我的 array_map 输出下方,

Array
(
[2042793285968] => YoungZen Technologies
[777607709013] => Challengers
[772593172886] => Vadavalli
[152429224945] => Time Pass
)

现在我想删除上面列表中的“挑战者”,并且我必须在没有挑战者的下拉列表中使用相同的 $page_names 变量。

我不擅长数组概念,我尝试了类似 array_filter 和 in_array 但没有发生。

【问题讨论】:

    标签: php arrays arraylist yii2-advanced-app array-map


    【解决方案1】:

    使用 array_diff 的解决方案

    $page_names = array_diff($page_names, ['Challengers']);
    

    【讨论】:

      【解决方案2】:

      这是一种选择:

      unset($page_names[array_search('Challengers', $page_names)]);
      

      为了分解这里的逻辑,首先我们调用array_search 并使用您要在关联数组中标识的array_search 将返回该值对应的第一个键,如果可以找到该值。

      然后,我们使用unset 传入相应的键,从数组中完全删除该键/值对。

      要使用键从地图中删除条目,代码要简单得多:

      unset($page_names[777607709013]);
      

      【讨论】:

      • 嘿!谢谢你的工作。如果我想用 unset($page_names[array_search('777607709013', $page_names)]);这不起作用
      • @sridhar 你可以使用unset($page_names[777607709013]) ...代码更简单。
      • 是的,它的工作非常感谢你,但我们必须在单引号内使用 unset($page_names['2042793285968339']);请更新您的答案
      • @sridhar 对于整数键,我认为您不需要使用引号。如果这些 id 实际上是字符串(似乎是这种情况),那么是的,您需要使用引号。
      【解决方案3】:

      或者你可以过滤掉它 -

      $arr = array_filter($arr, function($v) {
          return $v != 'Challengers'; // return true if value not 'Cha...'
      });
      

      array_filter()

      【讨论】:

      • 这也有效,谢谢,伙计。两个答案都有效。也请让我知道我应该如何对键值做同样的事情,比如 return $v != '777607709013' this
      • ARRAY_FILTER_USE_KEY 作为第三个参数。它将传递密钥。检查我添加到答案中的链接。
      猜你喜欢
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 2014-03-21
      • 2011-07-09
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多