0

我正在破解表达式引擎,以便在成员配置文件表单中使用多选、单选和复选框自定义字段类型。

解析表单并提交更新查询的模型将表单中的所有值提交到一个数组变量 - '$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); }
}

...然后重新插入原始索引或位置?

任何帮助表示赞赏。

4

2 回答 2

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 );
?>
于 2011-10-31T15:04:11.960 回答
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);

?>
于 2011-10-31T15:28:53.980 回答