php фильтр массива для фильтрации объекта из объекта массива - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу фильтровать и массив объектов, чтобы получить объект из него. Например, у меня есть массив $data, подобный этому

Array
(
  [0] => stdClass Object
    (
        [Country] => ALA Aland Islands
        [CountryCode] => AX
    )

  [1] => stdClass Object
    (
        [Country] => Afghanistan
        [CountryCode] => AF
    )

  [2] => stdClass Object
    (
        [Country] => Albania
        [CountryCode] => AL
    )

  [3] => stdClass Object
    (
        [Country] => Algeria
        [CountryCode] => DZ
    )

  [4] => stdClass Object
    (
        [Country] => American Samoa
        [CountryCode] => AS
    )
 )

Я пытаюсь отфильтровать ожидаемый объект, например:

$country_data = array_filter( $data, function($obj){
    return 'AF' == $obj->CountryCode;
});

, но он не работает. Я пытаюсь получить массив в конечном результате, содержащий эту страну, например,

Array(
    [Country] => Albania
    [CountryCode] => AL
)

1 Ответ

0 голосов
/ 12 апреля 2020

Как насчет этого с json_decode()?

$array = json_decode(json_encode($country_data), true);
print_r($array);

Полный демонстрационный код:

<?php
$array = array
    (
    '0' => array
    (
        'Country' => 'ALA Aland Islands',
        'CountryCode' => 'AX'
    )
    ,
    '1' => array
    (
        'Country' => 'Afghanistan',
        'CountryCode' => 'AF'
    )
    ,
    '2' =>array
    (
        'Country' => 'Albania',
        'CountryCode' => 'AL'
    )
    ,
    '3' => array
    (
        'Country' => 'Algeria',
        'CountryCode' => 'DZ'
    )
    ,
    '4' => array
    (
        'Country' => 'American Samoa',
        'CountryCode' => 'AS'
    )
);
$data = json_decode(json_encode($array));
$country_data = array_filter( $data, function($obj){
    return 'AL' == $obj->CountryCode;
});
$array = json_decode(json_encode($country_data), true);
print_r($array);
?>

DEMO: https://3v4l.org/WUlCC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...