Получить только соответствующее значение ключа из массива - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть такой массив результатов.

Array
(
    [Bank] => Array
        (
            [name] => Bank
            [status] => 1
            [enable_rcb] => 1
        )

    [Cod] => Array
        (
            [name] => Cod
            [status] => 1
            [enable_rcb] => 0
        )

    [Lite] => Array
        (
            [name] => Lite
            [status] => 0
            [enable_rcb] => 0
        )
)

Я хочу получить результат из условия. Например, я хочу показать только банк, если статус 1 и оставить массив остальных. Я пытаюсь показать их вот так

        $results = array();
        foreach ($user_pay as $value) {
            foreach ($value as $k => $v) {
                if($value['status']=="1"){
                    $user_payment[] = $value['name'];
                }
            }
            $results = $user_payment;
        }

Но результат дает мне дублирующийся результат вот так

Array
(
    [0] => Bank
    [1] => Bank
    [2] => Bank
    [3] => Bank
    [4] => Bank
    [5] => Bank
    [6] => Cod
    [7] => Cod
    [8] => Cod
    [9] => Cod
    [10] => Cod
)

Мне нужно получить имя массива, который имеет статус 1и так и должно быть

Array
(
    [0] => Bank
    [1] => Cod
)

Как избежать этого дублированного результата?

Ответы [ 4 ]

3 голосов
/ 11 декабря 2019

Вы можете использовать array_filter, чтобы получить только те, которые имеют желаемый статус, затем array_column, чтобы получить их имена:

$filtered = array_filter($arr, static function ($entry) {
  return $entry['status'] === 1;
});

$names = array_column($filtered, 'name');

Демо: https://3v4l.org/Nhc0P

2 голосов
/ 11 декабря 2019

Вы можете изменить цикл так, чтобы

$results = array();
foreach($array as $key=>$value):
    if($value["status"]){
      $results[] = $value["name"];
    }
endforeach;
1 голос
/ 11 декабря 2019

Вы можете подойти к нему как

$new = array_keys(array_filter($a,function($v){
  return $v['status'] > 0;
}));

print_r($new);

Рабочий пример: - https://3v4l.org/5rQjm

0 голосов
/ 11 декабря 2019

Вы можете использовать array_unique ()

$result = array_unique($result);
...