PHP 在数组中内爆数组

发布于 2024-12-12 13:44:50 字数 535 浏览 0 评论 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); }
}

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

任何帮助表示赞赏。

I'm hacking Expression Engine to enable the use of multiselect, radio and checkbox custom field types within the members profile form.

The model which parses the form and commits the update query submits all values from the form in one array variable - '$data'. One of the array values within $data is another array coming from a multiselect field type - so when the query is submitted it returns an error...

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

So I need to implode any arrays within the $data array before the SQL is executed.

Is there a function something like...

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

...then reinsert at the original index or position?

Any help appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酸甜透明夹心 2024-12-19 13:44:50

你们非常接近。您正在寻找的方法是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 );
?>

You were pretty close. The method you are looking for is is_array. Also, foreach, can give you the index as well as the value so that you can update the value in the array yourself.

<?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 );
?>
请爱~陌生人 2024-12-19 13:44:50

这最适用于带有匿名函数的新映射函数(自 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);

?>

This is best use for new mapping function with anonymous function (since 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);

?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文