PHP внедряет массив в массив - PullRequest
0 голосов
/ 31 октября 2011

Я взламываю Expression Engine, чтобы включить использование настраиваемых типов полей multiselect, radio и checkbox в форме профиля участников.

Модель, которая анализирует форму и фиксирует запрос на обновление, передает все значения изФорма в одной переменной массива - '$ data'.Одно из значений массива в $ data - это другой массив, относящийся к типу поля с множественным выбором, поэтому при отправке запроса он возвращает ошибку ...

Unknown column 'Array' in 'field list'
UPDATE `apcims_member_data` SET `m_field_id_1` = '', `m_field_id_2` = Array WHERE `member_id` = '2'

Поэтому мне нужно сжать любые массивы внутри $массив данных перед выполнением SQL.

Есть ли функция, похожая на ...

foreach($data AS $value) {
if($value(is_array)) { $value = implode("|", $value); }
}

... и затем повторно вставленная в исходный индекс или позицию?

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 31 октября 2011

Лучше всего использовать новую функцию отображения с анонимной функцией (начиная с PHP 5.3)

<?php

$data = array('a' => array(1, 2, 3), 'b' => 9, 'c' => array(4, 5, 6));

$data = array_map(function($value) {
  return is_array($value) ? implode('|', $value) : $value;
}, $data);

var_dump($data);

?>
1 голос
/ 31 октября 2011

Вы были довольно близко.Метод, который вы ищете, это is_array.Кроме того, foreach может предоставить вам индекс и значение, чтобы вы могли самостоятельно обновить значение в массиве.

...