Search in array, like select?

前端 未结 3 1752
天涯浪人
天涯浪人 2021-01-28 03:32

My array with countries is:

$cars = array(
    [\'brand\' => \'bmw\', \'place_1\' => \'Munich\', \'place_2\' => \'Cologne\'],
    [\'brand\' => \'vw\         


        
相关标签:
3条回答
  • 2021-01-28 03:35

    Not tested but something like this

       function arraySelect($arr,$brand){
            $selection=[];
            foreach($arr as $a){
                    if($a["brand"]=$brand{
                            array_push($selection,$a);
                    }
            }
            return $selection;
    }
    
    0 讨论(0)
  • 2021-01-28 03:40

    Use your brands as array keys instead of using numeric array indexes.

    Something like this

    $cars = [
      'bmw' => ['place_1' => 'Munich', 'place_2' => 'Cologne'],
      'vw' => ['brand' => 'vw', 'place_1' => 'Berlin', 'place_2' => 'Kopenhagen'],
      'hyndai' => ['brand' => 'hyndai', 'place_1' => 'Miami', 'place_2' => 'Newyork'],
    ];
    

    Then you can access the variables like you want to: $cars['bmw']['place_1']


    P.S : "hyndai" is probably a typo - it's spelled Hyundai

    0 讨论(0)
  • 2021-01-28 03:58

    If you don't have opportunity to rebuild your array as @Daniel suggested, then you have to iterate over it, something like this:

    $brand_to_find = 'bmw';
    $key_to_select = 'place_2';
    
    foreach ($cars as $car) {
        if ($car['brand'] == $brand_to_find) {
            echo $car[$key_to_select];
    
            // if you're sure that will be no
            // more `bmw` in your array - break
            break;
        }
    }
    

    All wrapped in a function:

    function findPlaceByBrand($cars, $brand_to_find, $key_to_select) 
    {
        $result = '';
    
        foreach ($cars as $car) {
            if ($car['brand'] == $brand_to_find) {
                $result = $car[$key_to_select];
    
                // if you're sure that will be no
                // more `bmw` in your array - break
                break;
            }
        }
    
        return $result;
    }
    
    echo findPlaceByBrand($cars, 'bmw', 'place_2');   // Cologne
    echo findPlaceByBrand($cars, 'vw', 'place_1');    // Berlin
    echo findPlaceByBrand($cars, 'honda', 'place_1'); // empty string
    
    0 讨论(0)
提交回复
热议问题