doupao1530 2018-02-10 17:13
浏览 63
已采纳

过滤具有相似字符的多维数组

I have a json file and I need to look for similar values in both columns. For the JSON, It has 5,000 rows so I don't think looping to each is the right way. My json looks like this:

{
   "code": "8485",
   "title": "A BAD DREAM",
   "artist": "KEANE"
 },
 {
   "code": "50957",
   "title": "A BIG HUNK O' LOVE",
   "artist": "ELVIS PRESLEY"
 },
 {
   "code": "55481",
   "title": "A BLUE GUITAR",
   "artist": "TANYA TUCKER"
 },

For example, I will look for things that has the letter 'B', it should look those that contain a letter 'B' for both the title and artist.

So what I did was converting the JSON to a multidimensional array. And I can't make the array_filter work with a multidimensional array.

  • 写回答

2条回答 默认 最新

  • doudang2817 2018-02-10 17:23
    关注

    This is how you can use array_filter

    And you can use strpos to check if string contains a string.

    Note: This will check if title OR artist (either one) has the search word or letter. If you are looking for both, see Syscall's answer. :)

    $arr = '[
    {
       "code": "8485",
       "title": "A BAD DREAM",
       "artist": "KEANE"
     },
     {
       "code": "50957",
       "title": "A BIG HUNK O\' LOVE",
       "artist": "ELVIS PRESLEY"
     },
     {
       "code": "55481",
       "title": "A BLUE GUITAR",
       "artist": "TANYA TUCKER"
     }
     ]
    ';
    
    $arr = json_decode( $arr, true );
    
    $search = "O"; /* Search letter O */
    
    $result = array_filter( $arr, function( $v ) use ( $search ) {
        return strpos($v[ "title" ], $search) !== false || strpos($v[ "artist" ], $search) !== false;
    });
    
    echo "<pre>";
    print_r( $result );
    echo "</pre>";
    

    This will result to:

    Array
    (
        [1] => Array
            (
                [code] => 50957
                [title] => A BIG HUNK O' LOVE
                [artist] => ELVIS PRESLEY
            )
    
    )
    

    For more info: http://php.net/manual/en/function.array-filter.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?