Данные PHP $ _POST в переменную

0

У меня есть следующие данные $ _POST из поля формы

array(2) { 
   ["item-1"] => 
       array(2) { 
           ["name"]=> string(5) "apple" 
           ["price"]=> string(1) "5" 
       } 
   ["item-2"] => 
       array(2) { 
           ["name"]=> string(6) "orange" 
           ["price"]=> string(1) "2" 
       }
} 

Я хочу сохранить эти данные в переменных, используя foreach, такие как $name_1 $price_1 & $name_2 $price_2

Как я могу разобрать данные формы?

  • 3
    Это кажется очень плохой идеей, потому что у вас может быть неизвестное количество записей. Каков именно ваш вариант использования? Зачем вам переменные $name_1 , $name_2 и т. Д.?
  • 0
    Вместо этого используйте массив, используя переменные, подобные этой.
Теги:
arrays
parsing

4 ответа

2
Лучший ответ

Хотя я считаю совершенно нецелесообразным использовать переменные таким образом, это может помочь вам. Он автоматически создавал переменные, используя данные.

//array with values
$source = [
    'item-1' => [
        'name' => 'apple',
        'price' => '5',
    ],
    'item-2' => [
        'name' => 'orange',
        'price' => '2'
    ]
];

foreach($source as $k=>$array) {
    //get all integer values from the key
    $int = preg_replace('/[^0-9]/', '', $k);

    //foreach property in $array, create the variable name + the integer number 
    //as a variable and set the value belonging to the key
    foreach($array as $name=>$value) {
        ${$name . '_' . $int} = $value;
    }
}
  • 0
    На самом деле это ответ, который отражает вопрос лучше всего.
0
foreach ($_POST as $k => $v) {
  $i = +preg_replace('/item-(\d+)/', '$1', $k);
  foreach(array('name', 'price') as $name) {
    $key = "$name_$i";
    $$key = $v[$name];
}

Надеюсь, поможет.

0

Попробуй это..

<?php
$response = 
array(    
        'item-1' => array(
            2 => array(
                'name' => 'apple',
                'price' => 5
            ),          
        ),
        'item-2' => array(
            2 => array(
                'name' => 'orange',
                'price' => 2
            ),          
        ),
    );



foreach($response as $key =>$value)
{

$k=explode("-",$key);
$keyvalue=end($k);
foreach($value as $result)
{
echo ${'name_' . $keyvalue}=$result['name'];
echo "</br>";
echo ${'price_' . $keyvalue}=$result['price'];
echo "</br>";
}
}
?>
0
$i = 1;
foreach($_POST as $data) {
    ${'name_' . $i}  = $data["name"];
    ${'price_' . $i} = $data["price"];
    $i++;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню