PHP从列表中创建一个短数组

时间:2017-05-26 10:37:23

标签: php arrays forms

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

Guzzle帖子请求的示例:

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

问题案例:

我有一个List: Params 对象: Param 。 Param有三个属性 id name link_id

假设List有三个Object。

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 . ]];

我真的可以使用一些帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果您只想显示短数组语法,此解决方案可能会帮助您解决问题。

https://stackoverflow.com/a/35207172/4781882

答案 1 :(得分:0)

我不太确定你为什么要求它是一个“短阵”,但这是一个解决方案......

我认为这是一个网络表单,是吗?

因此,我们假设您以可用的方式命名表单,例如:

<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);