как l oop через массив с динамическими c ключами в PHP - PullRequest
0 голосов
/ 25 марта 2020

У меня есть массив data , где я храню результат запроса SQL, как показано ниже:

$stmt = sqlsrv_query($db,$sql);  
$data = [];
while($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {
if(!empty($row)) { $data[] = $row; }  }

, затем я хочу создать групповой ключ, который является объединением из указанных c ключей моего массива данных , как показано ниже:

foreach ($data as $d) {

$group_key = $d['id'].'_'.$d['Country'].'_'.$d['Order Numer']; 

//rest of my code 

}

это работает нормально, но я хочу выбирать ключи динамически, вместо того, чтобы настраивать идентификатор вручную, страну и номер заказа ... скажем, у меня есть массив $PostKeys = ["id","Country","Order Number"]; этот массив будет варьироваться в зависимости от значений, выбранных пользователем ...

То, что я сделал, это:

$PostKeys = ["id","Country","Order Number"];

foreach ($data as $d) { 

  foreach($PostKeys as $value)
  { $array_group_key[] = $d[$value] ; }

$group_key = implode("_",$array_group_key); 
// rest of my code 
}

Я должен получить тот же результат, но всегда есть несоответствие. Я не понял, где именно проблема. Любые предложения, пожалуйста? Большое спасибо.

1 Ответ

1 голос
/ 25 марта 2020

Вам необходимо очищать $array_group_key каждый раз через l oop. В противном случае вы добавляете результаты из всех предыдущих строк.

foreach ($data as $d) { 
    $array_group_key = [];
    foreach($PostKeys as $value)
    { 
        $array_group_key[] = $d[$value] ; 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...