例如:現有的數據從數據庫字段中檢索: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