2017-05-26 40 views
0

我想动态地创建一个包含对象列表的短阵列。这是针对Guzzle客户端的POST请求。这就是为什么我需要一个短阵列。一个狂饮POST请求的PHP从列表中创建一个短阵列

例如:

$res = $this->client->request($methode, $request_url, [ 
      'form_params' => [ 
       'param' => 'value' 
      ] 
     ]); 

问题情况:

我有一个列表:PARAMS对象帕拉姆。 Param有三个属性id名称link_id

假设列表有三个对象。

param(1, email, 1) 
param(2, username, 1) 
param(3, password, 1) 

我想动态地从列表中创建一个数组与short array syntax

例(伪):

for each params as param 

[ 
    'form_params' => [ 
    param->name => 'value' 
    ] 
] 

这段代码的结果会是这样

[ 
    'form_params' => [ 
    'email' => 'value', 
    'username' => 'value', 
    'password' => 'value' 
    ] 
] 

代码示例:

$params = array(
    "param" => array (
     "id" => "1", 
     "name" => "username", 
     "link_id" => "1", 
    ) 
); 

$value = ''; 
$shortarray = ''; 
foreach($params as $key => $param){ 
    $shortarray .= $param->name . '=>' . $value . ','; 
} 

$postParams = ['form_params' => [ . $shortarray . ]]; 

我真的可以使用一些帮助。先谢谢你。

+0

你能清楚地分享你的意见吗? –

+0

这是否使它更清楚?你能否给我反馈我在这个例子中编写的代码。 – melkawakibi

+0

我正在谈论你正在得到的输入数组。 –

回答

0

我不明白为什么你需要它是一个“短阵”,但这里有一个解决方案...

我想这是一个Web表单,是吗?

因此,让我们假设你的名字你的形式的方式,是可用的,如:

<form method="POST" action="yourform.html"> 
Line 1 <input name="email1"> | <input name="user1"> | <input name="password1"> 
<br/>-------<br/> 
Line 2 <input name="email2"> | <input name="user2"> | <input name="password2"> 
<br/>-------<br/> 
Line 3 <input name="email3"> | <input name="user3"> | <input name="password3"> 
</form> 

则...

for($i = 1; $i <= 3; $i++ { 
    $postparms[] = ['email' => $_POST['email'.$i], 'user' => $_POST['user'.$i], 'password' => $_POST['password'.$i] ]; 
} 

print_r($postparms); 
+0

感谢您的回复,我正在用GuzzleClient构建一个POST请求的短阵列。这不是我要找的。对不起,我会添加更多的上下文。 - – melkawakibi