我正在攻击Expression Engine,以便在成员资料表单中使用多选,广播和复选框自定义字段类型。
解析表单并提交更新查询的模型在一个数组变量'$ 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之前内爆$ data数组中的任何数组。
是否有类似......的功能
foreach($data AS $value) {
if($value(is_array)) { $value = implode("|", $value); }
}
...然后重新插入原始索引或位置?
任何帮助表示感谢。
答案 0 :(得分:1)
你非常接近。您要查找的方法是is_array
。此外,foreach
可以为您提供索引和值,以便您可以自己更新数组中的值。
<?php
$data =array( 'a' => array( 1,2,3 ), 'c' => array( 4,5,6 ) );
foreach($data AS $key => $value) {
if(is_array($value))
{
$data[ $key ] = implode("|", $value);
}
}
var_dump( $data );
?>
答案 1 :(得分:1)
这最适用于具有匿名功能的新映射函数(自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);
?>