如何在DynamoDB PutItem中实现数组属性的嵌套?
没问题,我来帮你搞定DynamoDB中嵌套数组属性的存储需求!
在DynamoDB里,如果你要存储有序的数组集合,需要用到List类型(标记为'L'),而不是直接放普通PHP数组。每个List里的元素都必须明确指定自己的数据类型(比如字符串用'S',数字用'N',甚至嵌套另一个List用'L')。
修改后的示例代码
假设你想把color1从单个字符串改成包含多个颜色的数组,比如["red", "blue", "green"],代码可以这么写:
$result = $client->putItem(array( 'TableName' => 'usr', 'Item' => array( 'email' => array('S' => $_POST['email']), 'first' => array('S' => $_POST['firstname']), 'country' => array('S' => $_POST['country']), 'last' => array('S' => $_POST['lastname']), 'password' => array('S' => $_POST['password']), // 补全你原代码里的密码字段 'color1' => array( 'L' => array( array('S' => 'red'), array('S' => 'blue'), array('S' => 'green') ) ) ) ));
从用户输入动态构建数组
如果你的颜色数组是从POST请求里获取的(比如用户提交了一个多选颜色的表单,对应$_POST['colors']数组),可以通过循环来动态生成DynamoDB需要的List结构:
// 假设$_POST['colors']是用户提交的颜色数组,比如['red', 'blue', 'green'] $colorList = []; foreach ($_POST['colors'] as $color) { $colorList[] = array('S' => $color); } $result = $client->putItem(array( 'TableName' => 'usr', 'Item' => array( 'email' => array('S' => $_POST['email']), 'first' => array('S' => $_POST['firstname']), 'country' => array('S' => $_POST['country']), 'last' => array('S' => $_POST['lastname']), 'password' => array('S' => $_POST['password']), 'color1' => array('L' => $colorList) ) ));
嵌套更深的子数组
如果需要在数组里再嵌套子数组(比如颜色分组),只需要在List元素里再嵌套一个'L'类型即可:
'color1' => array( 'L' => array( array('S' => 'red'), array( 'L' => array( array('S' => 'light-blue'), array('S' => 'dark-blue') ) ), array('S' => 'green') ) )
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

