例如:从db字段检索现有数据:a,b,c,d,e 所以现在
$data= "a,b,c,d,e";
例如:要添加的新数据--- cc,gg 保存到db中的最终值将是
$finaldatatobeupdatedintodb= "a,b,c,d,e,cc,gg";
检索并添加更多值。
然后将其追加到逗号列表中。
如何使用implode和explode进行纯粹的操作,而无需将其放入数组中以进行循环以重新添加/重新添加添加了新值的内容?
答案 0 :(得分:4)
如果你真的想使用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所示,在您呈现的简单情况下,不需要这么复杂的代码:字符串连接就足够了; - )
基于array / explode / implode的解决方案的优势在于,您可以在将其插入字符串之前处理最终数组(例如,您可以对其进行排序)
答案 1 :(得分:2)
$finaldatatobeupdatedintodb = $data . ',cc,gg';
这就是你需要的吗?很难准确理解你的问题是什么。
答案 2 :(得分:1)
类似于Rob的回答,但可能更强大一些:
$final = $data . (strlen($data) ? "," : "") . "cc,gg";
或者,如果您的额外值以数组形式出现:
$newValues = array("cc", "gg");
$final = $data . (strlen($data) ? "," : "") . implode(",", $newValues);
答案 3 :(得分:0)
<?
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>";
?>
答案 4 :(得分:0)
您能否详细说明为什么需要在数据库中存储以逗号分隔的值?通常,您将为不同的离散值使用单独的字段。如果您有固定数量的值,则可以使用SET字段类型。
通常最好的解决方案是使用单独的表格。维基百科在Database normalization的年龄可能会有所帮助。