2015-05-21 2 views
3

Я вставляю переменные в AWS DynamoDB из массива $ dbf [$ a] ['variable1'], $ dbf [$ a] ['variable2'] , $ dbf [$ a] ['variable3'] ...AWS SDK для PHP DynamoDB PutItem только для ненулевых переменных

для некоторых $ a, только 'variable1' и 'variable2' установлены, а для других $ a, all 'variable #' установлены.

Приведенный ниже код не будет работать, поскольку разрешены нулевые или не заданные переменные .

Есть ли способ в цикле только для попытки «PutItem» для переменных, которые установлены?

foreach($dbf as $day) 
{ 
$result = $client->PutItem(array(
    'TableName' => 'AWIS', 
    'Item' => array(
     'id' => array('S' => $day['id']), 
     'date'=> array('S' => $day['date']), 
     'max'=> array('N' => $day['max']), 
     'min'=> array('N' => $day['min']), 
     'pre'=> array('N' => $day['pre']), 
     'max_soil_temp'=> array('N' => $day['max_soil_temp']), 
     'min_soil_temp'=> array('N' => $day['min_soil_temp']), 
     'evap'=> array('N' => $day['evap']), 
     'veg_wetting'=> array('N' => $day['veg_wetting']), 
     'solar_rad'=> array('N' => $day['solar_rad']), 
     'ob_temp'=> array('N' => $day['ob_temp']), 
     'adj_min'=> array('N' => $day['adj_min']), 
     'chill_hours'=> array('N' => $day['chill_hours']) 
       ), 
          )); 
} 

ответ

1

Вы потенциально можете сделать так:

if ($yourValue) { 
     $params['yourKey'] = array(
      'Action' => 'PUT', 
      'Value' => array(
       Type::STRING => $yourValue 
      ) 
     ); 
    } 

$response = $Client->updateItem(array(
      "TableName" => "tableName", 
      "Key" => array(
       "Id" => array(
        Type::STRING => $Id 
       ) 
      ), 
      "AttributeUpdates" => $params 
       ) 
     ); 

Установите все Params, которые доступны в цикле и будет обновлять только те значения, которые доступны

Надежда, что помогает

Смежные вопросы