如何使用php数组创建变量?

时间:2016-10-16 13:34:52

标签: php arrays

我有一个PHP数组,如下所示:

Array(

  [0] => Array
      (
          [name] => month_year
          [value] => 201609
      )

  [1] => Array
      (
          [name] => advance_amount
          [value] => 50%
      )

)

使用这个数组,我想创建两个这样的变量:

$month_year = '201609'; 
$advance_amount = '50%'; 

任何人都可以告诉我这可能在PHP?

我尝试使用两个foreach,但我不知道如何预防。

foreach ($_POST as $k => $data) {
  //echo "<pre>", print_r($data)."</pre>";
  foreach ($data as $key => $value) {
    echo $key."<br>";
  }
}

4 个答案:

答案 0 :(得分:2)

使用variable variables。您的foreach循环应该是这样的:

foreach ($_POST as $k => $data) {
    $$data['name'] = $data['value'];
}

// display variables
echo $month_year . "<br />";
echo $advance_amount;

答案 1 :(得分:1)

PHP7风格:

$a = [['name' = 'month_year', 'value' => '201609'], ['name' => 'advance_amount', 'value' => '50%']];


foreach ($a as $line) {
    ${$line['name']} = $line['value'];
}

php > echo $month_year; //201609

查看Variables参考

  

注意

     

进一步解除引用数组的变量属性   PHP 5和PHP 7之间的不同语义.PHP 7.0迁移   指南包含有关表达类型的更多详细信息   改变了,以及如何放置花括号以避免歧义。

答案 2 :(得分:1)

使用列表可以更清晰地解决问题:例如

$data = [
    [
        'name' => 'month_year',
        'value' => 201609
    ],
    [
        'name' => 'advance_amount',
        'value' => '50%'
    ]
];

list($month_year, $advance_amount) = array_map(function($value){
    return $value['value'];
}, $data);

echo sprintf('Month of the year is %s with porcentage %s', $month_year, $advance_amount);

这将使您获得更清晰的代码所需的结果。

Month of the year is 201609 with porcentage 50%

答案 3 :(得分:0)

首先创建循环并声明var。

  $data = array(array(
            'name' => 'month_year',
            'value' => 201609,
        ), array(
            'name' => 'advance_amount',
            'value' => '50%',
        )
    );

    foreach ($data as $key => $value) {
        ${$value['name']} = $value['value'];
    }


    echo $month_year;
    echo '<br>';
    echo $advance_amount;