簡體   English   中英

PHP - 按字符串搜索/過濾多維數組

[英]PHP - search / filter a multidimentional array by string(s)

我有一個像這樣的多維數組:

$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只包含第一個和最后一個數組?

我需要傳遞一個搜索項,如果任何鍵值包含該字符串,則返回整個子數組。

如果我通過“傑克約翰遜”,$ testarray應該只包含最后一個數組。

  • 這是可能的,還是我錯誤的方式? 普通搜索結果如何為數據庫工作?

我一直在尋找很多堆棧溢出頁面(和PHP手冊+谷歌),但沒有任何幫助我,如果我發布已經有答案的東西,請評論我的鏈接。

太謝謝了!

這是執行此操作的一種方法,請記住,只有在搜索數組直接嵌套在外部搜索數組中時,它才會起作用。

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

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

    });
}

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

我沒有測試過這個,但這應該有用......

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;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM