Значение многомерного массива при выходе - PullRequest
1 голос
/ 04 мая 2019

Я хочу получить результаты, которые имеют статус 1 в массиве. (Извините, я не говорю по-английски) Мой массив:

 [10100002] => Array
        (
            [0] => stdClass Object
                (
                    [ID] => 664
                    [barcode] => 10100002                   
                    [status] => 0
                )

            [1] => stdClass Object
                (
                    [ID] => 1339
                    [barcode] => 10100002                   
                    [status] => 0
                )

        )
 [10100004] => Array
        (
            [0] => stdClass Object
                (
                    [ID] => 1116
                    [barcode] => 10100004                   
                    [status] => 1
                )

            [1] => stdClass Object
                (
                    [ID] => 1826
                    [barcode] => 10100004                    
                    [status] => 0
                )

        )

в 10100002 два состояния равны 0, но второй массив обнаружил состояние 1. если значение состояния равно 1 в нескольких массивах, я хотел бы получить следующее;

[10100004] => Array
        (
            [0] => stdClass Object
                (
                    [ID] => 1116
                    [barcode] => 10100004                   
                    [status] => 1
                )

            [1] => stdClass Object
                (
                    [ID] => 1826
                    [barcode] => 10100004                    
                    [status] => 0
                )

        )

Мой код здесь;

$result = array();
            foreach ($fetch_data as $value) {
              if($value->status== 1)
              $result[$value->barcode][] = $value;
            }

// это дает мне только один результат. Выходной;

[10100004] => Array
        (
            [0] => stdClass Object
                (
                    [ID] => 1116
                    [barcode] => 10100004                   
                    [status] => 1
                )
)

1 Ответ

0 голосов
/ 04 мая 2019

Вы можете использовать array_walk

$arr = Array(
 '10100002' => Array
 (
    '0' => Array
        (
            'ID' => 664,
            'barcode' => 10100002,                
            'status' => 0
        ),

    '1' => Array
        (
            'ID' => 1339,
            'barcode' => 10100002,                  
            'status' => 0
        )

 ),
'10100004' => Array
(
    '0' => Array
        (
            'ID' => 1116,
            'barcode' => 10100004,                  
            'status' => 1
        ),

    '1' => Array
        (
            'ID' => 1826,
            'barcode' => 10100004,                 
            'status' => 0
        )

)
);
$res = [];
array_walk($arr, function($v, $k) use (&$res){
  foreach($v as $key => $value){
    if($value['status']){
       !empty($value['status']) ? ($res[$k][] = (object)$v[$key]) : '';
     }
 }
});
echo '<pre>';
print_r($res);

Выход

Array
(
  [10100004] => Array
    (
        [0] => stdClass Object
            (
                [ID] => 1116
                [barcode] => 10100004
                [status] => 1
            )
     )
 )

LIVE DEMO

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