首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在每个数组前面添加字符串

如何在每个数组前面添加字符串
EN

Stack Overflow用户
提问于 2011-03-27 18:42:10
回答 3查看 1.9K关注 0票数 1

我想从一个数组中产生一个这样的字符串:

代码语言:javascript
复制
omc_playroom.id,omc_playroom.name,omc_playroom.parentid,
omc_playroom.status,omc_playroom.table_id,omc_playroom.lang_id

我试过了,但它只为第一个添加了omc_playroom。

代码语言:javascript
复制
$fields = array('id, name, parentid, status, table_id, lang_id');
$module ='playroom';
$playrooms = getAll($fields, $module);
echo $playrooms;

function getAll($fields, $module){
    $string = '';
    $module_table = 'omc_' . $module;
    foreach ($fields as $field){
       $string .= ",$module_table.$field";
    }
    $string = substr($string, 1); // Remove leading ","
    return $string;
}

这会产生以下结果:

代码语言:javascript
复制
 omc_playroom.id,name,parentid,status,table_id,lang_id

如何在每一项前面添加omc_playroom?

EN

回答 3

Stack Overflow用户

发布于 2011-03-27 18:48:12

首先,您并没有真正的items数组:所有的items都在一个string中,这是您的$fields数组中唯一的元素。

让我们提取该项,并删除','分隔符后面有时出现的空格:

代码语言:javascript
复制
$fields = array('id, name,parentid,status,table_id,lang_id');
$str = $fields[0];
$str = str_replace(' ', '', $str);

现在,我们使用','作为分隔符,拆分$str字符串:

代码语言:javascript
复制
$items = explode(',', $str);

并循环结果数组,将前缀添加到每个元素:

代码语言:javascript
复制
foreach ($items as & $item) {
    $item = 'omc_' . $item;
}

最后,我们可以将这些元素内爆在一起,并响应结果:

代码语言:javascript
复制
$new_str = implode(',', $items);
echo $new_str;

然后我们得到:

代码语言:javascript
复制
omc_id,omc_name,omc_parentid,omc_status,omc_table_id,omc_lang_id

这似乎就是你所期望的。

但是,当然,如果您的$fields变量确实包含真正的正确数组:

代码语言:javascript
复制
$fields = array('id', 'name', 'parentid', 'status', 'table_id', 'lang_id');

事情会简单得多:你只需要遍历这个数组:

代码语言:javascript
复制
$fields = array('id', 'name', 'parentid', 'status', 'table_id', 'lang_id');
foreach ($fields as & $field) {
    $field = 'omc_' . $field;
}
var_dump($fields);

然后你就会得到:

代码语言:javascript
复制
array
  0 => string 'omc_id' (length=6)
  1 => string 'omc_name' (length=8)
  2 => string 'omc_parentid' (length=12)
  3 => string 'omc_status' (length=10)
  4 => string 'omc_table_id' (length=12)
  5 => &string 'omc_lang_id' (length=11)
票数 2
EN

Stack Overflow用户

发布于 2011-03-27 18:45:32

试试这个,因为你现在有一个只有一个元素的数组。

代码语言:javascript
复制
$fields = array('id', 'name', 'parentid', 'status', 'table_id', 'lang_id');
票数 1
EN

Stack Overflow用户

发布于 2018-01-05 05:53:30

因为你有一个“变量分隔符”,所以preg_replace()只需一步就可以做到这一点。

代码:(Demo)

代码语言:javascript
复制
$fields=['id, name,parentid,status,table_id,lang_id'];
$module='playroom';
$module_table='omc_'.$module;

echo preg_replace('/^|,\K ?/',"$module_table.",$fields[0]);
//  start of string-^
//              OR---^
//                    ^^^^^-match comma, restart match, then match optional space

输出:

代码语言:javascript
复制
omc_playroom.id,omc_playroom.name,omc_playroom.parentid,omc_playroom.status,omc_playroom.table_id,omc_playroom.lang_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5448716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档