如何在数组中找到所需的元素并检查它是否有值?

分享于2022年07月17日 laravel php 问答
【问题标题】:How to find the desired element in the array and check whether it has a value or not?如何在数组中找到所需的元素并检查它是否有值?
【发布时间】:2022-07-06 05:22:00
【问题描述】:

我有一个像这样的大数组:

"twitter_link" => "http://twitter.com"
"twitter_text" => "text"
"***_link" => ""
"***_text" => ""
"snapchat_link" => "http://twitter.com"
"snapchat_text" => "text"
"linkedin_link" => ""
"linkedin_text" => ""

在这个数组中,我需要找到所有的 *_link 键并检查是否设置了值,然后将所有有值的键添加到另一个数组中

  • 所以遍历数组,很简单。

【解决方案1】:

我想建议您阅读以下文档: https://laravel.com/docs/8.x/collections#available-methods ,如果您认为 php 中的 array_* 方法不足以满足您的需求,这可能会帮助您找到多种迭代和更改数组的方法需要! :D

回答您的问题,您需要的是以下知识:

  1. preg_match(...) 函数
  2. array_filter(...) 函数使用标志:ARRAY_FILTER_USE_BOTH

您只需执行以下操作:

$result = array_filter($links, fn($v, $k) => ($v !== "" && preg_match("/(_link)+$/i", $k)), ARRAY_FILTER_USE_BOTH)

然后瞧,但解释是什么?简直……

  1. 过滤器将使用键和值进行过滤,方法是将标志 ARRAY_FILTER_USE_BOTH 作为第三个元素传递给 array_filter() 方法。
  2. 在过滤过程中, $v (或值)不应为空。
  3. 同样在过滤过程中, $k (或键)应该在字符串末尾有一个 _filter

【讨论】:

  • 非常感谢,我会阅读文档)