2016-10-16 3 views
1

У меня есть PHP-массив, то, как показано ниже:Как создать переменные с помощью php-массива?

Array(

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

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

) 

Используя этот массив, я хочу создать 2 переменные, как это:

$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>"; 
    } 
} 

ответ

2

variable variables. Ваш foreach цикл должен быть такой:

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

// display variables 
echo $month_year . "<br />"; 
echo $advance_amount; 
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 ссылке

Внимание

Далее разыменование переменного свойства, которое массив имеет различные ставки семантики ween PHP 5 и PHP 7. Руководство по перенастройке PHP 7.0 содержит дополнительную информацию о типах выражений, которые имеют , и как разместить фигурные скобки, чтобы избежать двусмысленности.

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; 
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% 
Смежные вопросы