douhao8456 2015-11-14 10:37
浏览 9
已采纳

搜索数组并返回数组

How i can return the an array if it matches with the one particular field.

To make it more clear, suppose i have an array which looks like so ---

[1] => Array
    (
        [id] => 11
        [category] => phone cases
        [sale_price] => 90,99
        [price] => 120
        [product_name] => "iphone 6 plus" case transparent
    )

[2] => Array
    (
        [id] => 13
        [category] => shoes
        [sale_price] => 180,99
        [price] => 200
        [product_name] => blue platform shoes
        )

[3] => Array
    (
        [id] => 14
        [category] => wallet
        [sale_price] => 150
        [price] => 250
        [product_name] => valvet wallet

So what i want here is that if i search for valvet it should search in the array's [product_name] field and return the array with other fields as well.

For example ---

if i search for valvet it should return --

[0] => Array
    (
        [id] => 14
        [category] => wallet
        [sale_price] => 150
        [price] => 250
        [product_name] => valvet wallet
    )

This is my PHP code, what i am trying to do --

$data = 'plus'; // what i want to search
$search = my_array_search($all_data, $data);

    function my_array_search($array, $string)
{
    $ret = false;
    $pattern = preg_replace('/\s+/', ' ', preg_quote($string, '/'));
    foreach($array AS $k => $v) {
      $res = preg_grep('/' . $pattern . '/', $v);
      if(!empty($res)) $ret[$k] = $res;
    }

    return $ret;
}

But it is only returning the ["product_name"] not the array that matches !!

How can i fix that can someone help me to fix this issue !!!

  • 写回答

2条回答 默认 最新

  • doufan6033 2015-11-14 10:43
    关注

    Why not fill $ret with $v instead?

    function my_array_search($array, $string)
    {
        $ret = false;
        $pattern = preg_replace('/\s+/', ' ', preg_quote($string, '/'));
        foreach($array AS $k => $v) {
          $res = preg_grep('/' . $pattern . '/', $v);
          if(!empty($res)) $ret[$k] = $v;
        }
    
        return $ret;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题