Массив php foreach (затем разделенный индекс) - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть в массив $ _POST все данные, которые мне нужны.

Если я print_r массив, я вижу что-то вроде этого:

Array (
  [0_45_115] => 01
  [0_46_115] => 01
  [0_47_115] => 01
  [0_48_115] => 01
  [0_49_115] => 01
  [0_50_115] => 01
  [0_51_115] => 01
  [0_52_115] => 01
  [0_53_115] => 01
  [0_54_115] => 01
  [0_55_115] => 01
  [0_56_115] => 01
  [0_57_115] => 01
  [0_58_115] => 01
  [0_59_115] => 01
  [0_60_115] => 01
  [0_61_115] => 01
  [0_62_115] => 01
  [0_63_115] => 01
  [0_64_115] => 01
  [0_65_115] => 01
  [0_66_115] => 01
  [0_67_115] => 01
)

Индекс, который я публикую из формы (name attr), не имеет подчеркивания. Например:

<input type="text" name="0 45 115" value="" />

Давайте забудем об этом.

0_45_115, индекс которого предоставит мне все необходимые данные, которые я хочу обновить или вставить новую строку в мою базу данных. Значение увидит мне информацию, которую я хочу.

Проблема в том, что я не знаю, как управлять массивом. Может быть, я должен использовать метод foreach, и я буду использовать функцию split, чтобы разделить индекс каждой строки. Затем я сделаю все остальное для вставки / обновления моей базы данных.

Я спрашиваю, как я могу использовать foreach для получения информации (индексные данные) из массива $_POST.

Ответы [ 4 ]

1 голос
/ 28 декабря 2011
foreach( $yourArray as $k => $v ) { 

   $keys = explode( "_", $k) // for first iterate you will get array('0','45','115')

}
1 голос
/ 28 декабря 2011

Пробелы преобразуются в подчеркивания согласно спецификациям PHP. См. эту страницу для более подробной информации. В частности, найдите эту строку на странице: Точки и пробелы в именах переменных преобразуются в подчеркивания.

Я думаю, что правильный подход будет

foreach($_POST as $key => $value)
{
    $parts = explode('_', $key);    //split your $key
    //then deal with corresponding $value
}
1 голос
/ 28 декабря 2011

См. Функцию array_keys () .
Она вернет все ключи входного массива, чем можно использовать функцию split () для работы с клавишамии получите необходимые данные.

Например:

$keys = array_keys($yourArray);
foreach($keys as $k) {
    $data = split("_", $k);
    print $data[0];
    print $data[1];
    print $data[2];

}
0 голосов
/ 28 декабря 2011

В качестве альтернативы циклу вы можете использовать array_map:

array_map(function ($str) {return explode('_', $str);}, 
          array_keys($_POST));

Результат:

array (
  array (
    0 => '0',
    1 => '45',
    2 => '115',
  ),
  array (
    0 => '0',
    1 => '46',
    2 => '115',
  ),
  array (
    0 => '0',
    1 => '47',
    2 => '115',
  ),
  ...

Поскольку только PHP 5.3 и новее имеют анонимные функции на уровне языка, цикл является лучшим выбором, если вам нужно поддерживать более ранние версии PHP. В противном случае вы должны использовать create_function, что просто ужасно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...