我有一个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>";
}
}
答案 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;