Php 从textarea创建数组

Php 从textarea创建数组,php,amazon-simpledb,Php,Amazon Simpledb,我正在尝试将一些数据放入Amazon的simpledb中。我需要为一个属性输入多个值(逗号分隔),但由于我现在有脚本,它将所有值作为一个属性输入。我想我需要从textarea中的逗号分隔值创建一个数组,但我不知道怎么做。见鬼,我真的不知道如何正确地问这个问题 这是密码 <?php require_once('./simpledb/config.inc.php'); ?> <html> <body> <h1>Input Cities</h1&

我正在尝试将一些数据放入Amazon的simpledb中。我需要为一个属性输入多个值(逗号分隔),但由于我现在有脚本,它将所有值作为一个属性输入。我想我需要从textarea中的逗号分隔值创建一个数组,但我不知道怎么做。见鬼,我真的不知道如何正确地问这个问题

这是密码

<?php require_once('./simpledb/config.inc.php');  ?>
<html>
<body>
<h1>Input Cities</h1>
<?php
$domain = "states";
if (!empty($_POST["state"])) {  // if a value is passed from the key input field save it
$state = $_POST["state"];
} else {
$state = "";
}
$state = stripslashes($state);  // remove PHP escaping 

if (!empty($_POST["cities"])) { // if a value is passed from the key input field save it
$cities = $_POST["cities"];
} else {
$cities = "";
}
//$cities = stripslashes($cities);  // remove PHP escaping 

?>
<FORM ACTION="addcities.php" METHOD=post>

<label>State (Caps)</label><br>
<input type=text name="state" size=10 value="<?php echo $state; ?>"><br>
<label>Cities ('' & comma seperated)</label><br>
<textarea name="cities" cols=60><?php echo($cities); ?></textarea><br>
<INPUT TYPE=submit VALUE="Add Cities">


<?php

if (!class_exists('SimpleDB')) require_once('./simpledb/sdb.php');  

$sdb = new SimpleDB(awsAccessKey, awsSecretKey);    // create connection

$item_name = $state; 
//$input_cities = array("value" => array($cities));
echo "<p>putAttributes() item $item_name<br>"; 
//$putAttributesRequest["make"] = array("value" => "Acura"); // Example add an attribute
$putAttributesRequest['City'] = array("value" => array("Blue","Red")); // Add multiple values
$rest = $sdb->putAttributes($domain,$item_name,$putAttributesRequest);
if ($rest) {
echo("Item $item_name created");
echo("RequestId: ".$sdb->RequestId."<br>");
echo("BoxUsage: ".$sdb->BoxUsage." = " . SimpleDB::displayUsage($sdb->BoxUsage)<br>");
} else {
echo("Item $item_name FAILED<br>");
echo("ErrorCode: ".$sdb->ErrorCode."<p>");
}

?>
使用php函数

例如:

$cities = explode(",", $_POST['cities']);
仅当您的数据格式如下所示时,此操作才有效:

纽约、拉斯维加斯、悉尼、墨尔本、伦敦

更改分解函数的第一部分以匹配文本区域的格式

然后,您可以执行以下操作:

foreach ($cities as $key => $val){
    echo trim($val) . '<br />';
}
foreach($key=>$val的城市){
回声微调($val)。“
”; }
将SimpleDB内容放在上面的foreach循环中,并在要使用城市名称的位置使用
$val

call_user_func_array("trim", $cities);

这将在数组中循环,并在每个城市上执行SimpleDB操作。

分解逗号上的字符串

$citiesArray = explode(",", $cities);
然后,您需要修剪每个城市,以确保城市名称前后没有额外的空白

call_user_func_array("trim", $cities);

PUT-Replace中还有一个请求参数。尽管其默认值为false,但请将其指定为false。如果Replace为false,则该值将作为多值添加到该属性,如果为true,则将替换旧值

此外,每次在PUT请求中都需要添加一对“属性名称和属性值”。i、 e如果您需要属性A的多值V1和V2,那么在您的请求中,它将是这样的-

https://sdb.amazonaws.com/
?Action=PutAttributes
&Attribute.1.Name=A
&Attribute.1.Value=V1
&Attribute.2.Name=A
&Attribute.2.Value=V2
&Attribute.3.Replace=false
&AWSAccessKeyId=[valid access key id]
&DomainName=MyDomain
&ItemName=Item123
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2010-01-25T15%3A03%3A05-07%3A00
&Version=2009-04-15
&Signature=[valid signature]

你想要一个来自textarea的数组还是amazon simple db上的一些提示?你不能更确定一点吗?对不起,我很难解释。我认为@Kyle R已经在下面找到了答案。所以,整个亚马逊的事情与这个问题无关。请学习正确地将任务划分为独立的部分。如果您不知道某个数据库所需的某种格式,这是一个问题。如果你知道格式,但不知道如何得到它-那是另一回事。不要把它们混在一起。只是试着提供足够的信息,以便有人能理解我的问题。对不起,谢谢。我会试一试并报告回来。我在上面添加了您的代码,并替换了这一行-
$puttributesrequest['City']=array(“value”=>array(“Blue”,“Red”)使用此
$putAttributeRequest['City']=array(“value”=>array($cities)),但添加到数据库中的唯一内容是单词“array”。请尝试此操作。它可能会解决您的问题:$putAttributesRequest['City']=array(“value”=>$cities);仍然只是输入单词“array”。您需要给我更多关于SimpleDB的工作原理的信息,以便为您提供解决方案。