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

时间:2011-03-27 10:42:10

标签: php

我想从数组中生成这样的字符串。

omc_playroom.id,omc_playroom.name,omc_playroom.parentid,
omc_playroom.status,omc_playroom.table_id,omc_playroom.lang_id

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

$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;
 }

这会产生,

 omc_playroom.id,name,parentid, status, table_id, lang_id

如何在每个项目前添加omc_playroom?

提前致谢。

3 个答案:

答案 0 :(得分:2)

嗯,首先,你没有真正的项目数组:所有项目都在一个字符串中,这是$fields数组的唯一元素。

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

$fields = array('id, name,parentid,status,table_id,lang_id');
$str = $fields[0];
$str = str_replace(' ', '', $str);

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

$items = explode(',', $str);

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

foreach ($items as & $item) {
    $item = 'omc_' . $item;
}

最后,我们可以将这些元素重新组合在一起,并回应结果:

$new_str = implode(',', $items);
echo $new_str;

我们得到:

omc_id,omc_name,omc_parentid,omc_status,omc_table_id,omc_lang_id

这似乎是你所期望的。



但是,如果你的$fields变量确实包含一个真正合适的数组:

$fields = array('id', 'name', 'parentid', 'status', 'table_id', 'lang_id');
事情会变得如此简单:你只需要遍历那个阵列:

$fields = array('id', 'name', 'parentid', 'status', 'table_id', 'lang_id');
foreach ($fields as & $field) {
    $field = 'omc_' . $field;
}
var_dump($fields);

你会得到:

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)

答案 1 :(得分:1)

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

$fields = array('id', 'name', 'parentid', 'status', 'table_id', 'lang_id');

答案 2 :(得分:0)

由于您有一个"变量分隔符",preg_replace()只需一步即可完成此操作。

代码:(Demo

$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

输出:

omc_playroom.id,omc_playroom.name,omc_playroom.parentid,omc_playroom.status,omc_playroom.table_id,omc_playroom.lang_id