如何在每个阵列前添加一个字符串
问题描述:
我想从数组中产生一个像这样的字符串。如何在每个阵列前添加一个字符串
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?
在此先感谢。
答
试试这个,因为你当前只有一个元素的数组。
$fields = array('id', 'name', 'parentid', 'status', 'table_id', 'lang_id');
答
嗯,首先,你真的没有项目的数组:你的项目是在一个字符串,它是你的$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)
答
既然你有一个“变量分隔符”,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
+1 L'ART倒L'ART工作:) – vbence 2011-03-27 10:50:43
感谢细节。 – shin 2011-03-27 10:55:45
另请注意,可能没有经验的开发人员可能会遇到与处理循环后最后一项的'$ field'变量有关的问题。 – zerkms 2011-03-27 10:58:09