Using preg_match on a multidimensional array to return key values arrays

后端 未结 6 975
情话喂你
情话喂你 2020-12-17 05:13

I have an array that is structured as such:

$data = array(
    \"abc\"=>array(
            \"label\" => \"abc\",
            \"value\" => \"def\",
          


        
相关标签:
6条回答
  • 2020-12-17 05:51

    preg_match_all returns the rows that match a pattern with a specific column name.

    $pattern = "/REDUCTION/i";
    $reductions = array_filter($data, function($a) use($pattern)  {
        return preg_match_all($pattern, $a['budget']);
    });
    
    0 讨论(0)
  • 2020-12-17 05:52

    If you are using PHP 5.5 and are viewing this question in 2015, this might be a more simple answer:

    $elements= array_column($array, 1); //Where 1 is the name of the column or the index
    $foundElements = preg_grep("/regex/i", $elements);
    
    0 讨论(0)
  • 2020-12-17 05:53

    Something like this?

    <?php
    $data = array(
        "abc"=>array(
                "label" => "abc",
                "value" => "def",
                "type" => "ghi",
                "desc" => "jkl",
                ),
        "def"=>array(
                "label" => "mno",
                "value" => "qrs",
                "type" => "tuv",
                "desc" => "wxyz",
                ),
        );
    
    $matches = array();
    $pattern = "/a/i";  //contains an 'a'
    //loop through the data
    foreach($data as $key=>$value){
        //loop through each key under data sub array
        foreach($value as $key2=>$value2){
            //check for match.
            if(preg_match($pattern, $value2)){
                //add to matches array.
                $matches[$key]=$value;
                //match found, so break from foreach
                break;
            }
        }
    }
    echo '<pre>'.print_r($matches, true).'</pre>';
    ?>
    
    0 讨论(0)
  • 2020-12-17 06:03

    for the googlers out there here's the better code

    $data = <as above>
    $pattern = "/whatever/";
    
    $matches = array_filter($data, function($a) use($pattern)  {
        return preg_grep($pattern, $a);
    });
    
    0 讨论(0)
  • 2020-12-17 06:08
    preg_grep('/needle/iu', array_column($haystack, "columnName", "keyName" ) );
    

    Case-insensitive unicode grep on column columnName in array $haystack

    0 讨论(0)
  • 2020-12-17 06:15
    $c=['abccd','123','12qw']; // where u'll search
    $a = Array('/a/i', '/\d/i', '/\d+\w/i'); // what is
    $b = array_map(function($a,$c){return (preg_match_all($a,$c,$m))? ($m[0][0]) : '';}, $a,$c);
    print_r($b);
    
    0 讨论(0)
提交回复
热议问题