例如:现有的数据从数据库字段中检索:A,B,C,d,E 所以现在php implode爆炸可以做到这一点?
$data= "a,b,c,d,e";
例如:要添加新数据---毫升,保存到分贝GG 最终值将be
$finaldatatobeupdatedintodb= "a,b,c,d,e,cc,gg";
检索出并添加更少的值。
然后将其追回到逗号列表中。
如何纯粹使用implode并爆炸,而无需将其放入数组以重建/重新添加具有新值的东西?
例如:现有的数据从数据库字段中检索:A,B,C,d,E 所以现在php implode爆炸可以做到这一点?
$data= "a,b,c,d,e";
例如:要添加新数据---毫升,保存到分贝GG 最终值将be
$finaldatatobeupdatedintodb= "a,b,c,d,e,cc,gg";
检索出并添加更少的值。
然后将其追回到逗号列表中。
如何纯粹使用implode并爆炸,而无需将其放入数组以重建/重新添加具有新值的东西?
$finaldatatobeupdatedintodb = $data . ',cc,gg';
这就是你需要的吗?确切地理解你的问题所要求的是很难的。
如果你真的想用explode和implode,你可以做这样的事情:
首先,爆炸你的字符串:
$data= "a,b,c,d,e";
$list = explode(',', $data);
var_dump($list);
,这将给你:
array
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 => string 'e' (length=1)
然后,添加新元素:
$to_add = array('cc', 'gg');
$new_list = array_merge($list, $to_add);
var_dump($new_list);
$new_list
现在是:
array
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
3 => string 'd' (length=1)
4 => string 'e' (length=1)
5 => string 'cc' (length=2)
6 => string 'gg' (length=2)
最后,爆了$ new_list,用 '' 作为分隔符:
$output = implode(',', $new_list);
var_dump($output);
,你会得到:
string 'a,b,c,d,e,cc,gg' (length=15)
中当然,如果你从一个数组开始,那么可以少做一件事;如果你想添加的数据不是一个数组,那么还有一个可以做的事情......
但是,正如Rob pointed out,在你提出的简单的情况下,没有必要对这样一个复杂的一段代码:串并置将是绰绰有余;-)
优势与阵列/爆炸/破灭依据的解决办法是,你可以爆成一个字符串(比方说,例如,你可以对它进行排序)前的最后阵列上工作
<?
function addvalues($data, $value) {
$array = Array();
$array = explode(",", $data);
// if value are an array, merge it, or just add as element
if(is_array($value))
$array = array_merge($array, $value);
else
$array[] = $value;
return implode(",", $array);
}
// original string
$data = "a,b,c,d,e";
echo "Old data = ".$data."<br>";
// see the function, it will work with both arrays and variables
$data = addvalues($data, Array("cc"));
$data = addvalues($data, "gg");
echo "New data = ".$data."<br>";
?>
罗布的答案相似,但可能是一个更稳健:
$final = $data . (strlen($data) ? "," : "") . "cc,gg";
,或者,如果你的额外值来作为数组:
$newValues = array("cc", "gg");
$final = $data . (strlen($data) ? "," : "") . implode(",", $newValues);
你能给为什么你需要存储在数据库中逗号分隔值更多的细节?通常情况下,您可以为不同的离散值使用单独的字段。如果您拥有固定数量的值,则可以使用SET字段类型。
通常最好的解决方案是使用单独的表格。维基百科的年龄在Database normalization可能会有所帮助。
你可以对这个问题进行重新说明,以便它更连贯一些,更容易理解? – 2009-08-10 20:49:33