当前位置: 首页 > 知识库问答 >
问题:

PHP-通过字符串搜索/过滤多维数组

左华灿
2023-03-14

我有一个多维数组,如下所示:

$testarray = array(
    array(
        'First name' => 'Johnny',
        'Last name' => 'Milthers',
        'Age' => '24'
    ),
    array(
        'First name' => 'Toby',
        'Last name' => 'Thomson',
        'Age' => '25'), 
    ),
    array(
        'First name' => 'Jack',
        'Last name' => 'Johnson',
        'Age' => '25'),
    );

如何传递搜索字符串(如“John”),使数组$testarray仅包含第一个和最后一个数组?。

我需要传递一个搜索项,如果任何键值包含该字符串,它将返回整个子数组。

另外,如果我通过“jackjohnson”,那么$testarray应该只包含最后一个数组。

  • 这是可能的,还是我走错了方向?数据库的正常搜索结果是如何工作的

我一直在看很多堆栈溢出页面(和PHP手册谷歌),但没有任何帮助我,如果我发布的东西已经有了答案,请评论我的链接。

太谢谢你了!

共有2个答案

阳建弼
2023-03-14

我还没有测试过这个,但这个应该可以用。。。

function find_in_array($search, $testarray) {
  $pattern = '*'.$search.'*';
  $array = array_filter($testarray, function($entry) use ($pattern) {
    foreach($entry as $key=>$value) {
      if (fnmatch($pattern, $value)) return true;
    }
    return false;
  });
  return $array;
 }
羊舌涵涤
2023-03-14

这里有一种方法,请记住,只有当搜索数组直接嵌套在外部搜索数组中时,它才会起作用。

function search_array($text, $array) {
    return array_filter($array, function($a) use($text){

       return stristr(implode(" ", $a), $text);

    });
}

http://sandbox.onlinephpfunctions.com/code/09e1187ccedba0804de5d797c350e218b05951cd

 类似资料:
  • 问题内容: 所有人都希望使用过滤的查询,其中结果应包含来自“ query_string”和来自“ term-filter”的数据。 预期结果是: 所有带有topic_id的字母“ a”或“”的博客记录均为10。 即使其描述为空白/空,也会记录topic_id为10的其余记录。 因此,最终结果应该是-具有较高分数的匹配记录,并且应该位于顶部,然后才是与过滤器中的“ topic_id”匹配的记录。 问

  • 问题内容: 我有一个php表单,该表单具有已知的列数(例如,顶部直径,底部直径,织物,颜色,数量),但是行数未知,因为用户可以根据需要添加行。 我发现了如何采用每个字段(列)并将其放入各自的数组中。 因此,我最终在HTML中得到的是: 我现在想做的是将所有行和列都放入多维数组,然后将其内容通过电子邮件发送给客户端(最好在格式良好的表中)。我还无法真正理解如何将所有这些输入和选择组合到一个不错的数组

  • 问题内容: 有没有一种快速的方法来获取在多维数组中找到键值对的所有子数组?我不能说阵列的深度。 简单示例数组: 当我搜索key = name和value =“ cat 1”时,该函数应返回: 我猜想函数必须是递归的才能深入到最深层次。 问题答案: 码: 输出: 如果效率很重要,则可以编写效率代码,以便所有递归调用将其结果存储在同一临时数组中,而不是将数组合并在一起,如下所示: 这里的关键是通过引用

  • 问题内容: 我正在研究AngularJS教程,并了解的基础知识 但是,开箱即用的实现似乎仅限于将项目列表过滤为输入的确切单词或短语。 示例:如果查询是“ table cloth”,则结果列表可以包含带有短语“ Decorative table cloth”的结果,但由于过滤器只是一个连续的搜索字符串,因此将不包括“ Table fortable装饰布”。 我知道可以添加自定义过滤器,但乍一看似乎主

  • 我有一个名为$all_cats的数组,它输出以下内容 例A 我尝试了以下方法,但似乎无法将每个项目添加到同一个键。如何添加每个术语\u id 如何添加每个term_id

  • 我知道如何计算出字符串中某个字符或数字的索引,但是有没有任何预定义的方法可以用来给我第n个位置的字符?所以在字符串“foo”中,如果我要求索引为0的字符,它会返回“f”。 注意——在上面的问题中,我所说的“字符”不是指字符数据类型,而是字符串中的字母或数字。这里重要的一点是,调用该方法时,我不会收到char,而是一个字符串(长度为1)。我知道substring()方法,但我想知道是否有更简洁的方法

  • 问题内容: 我有这样的课 我在我的参考 我的是根据Firebase查询的类生成的字典数组。然后,我得到了从另一个视图控制器(该函数是集合视图)生成的字符串。我想获取该字符串,然后使用与我之前的字符串相等的字符串过滤或搜索数组。然后删除不等于。不仅对象,而且包含非等键,值对的整个数组。我已经找了几天了,但我坚持过滤从类创建的字典数组。我已经看过并尝试过NSPredicates,for- in循环,但

  • 问题内容: 我有一个要在其中搜索并获取数组键的数组。 例子 假设我们有以下二维数组: 函数调用(第一个用户的uid)应返回。 函数调用应返回。 我尝试进行循环,但是我想要更快的执行代码。 问题答案: function searchForId($id, $array) { foreach ($array as $key => $val) { if ($val[‘uid’] === $id) { re