2009-08-10 110 views
-3

例如:現有的數據從數據庫字段中檢索:A,B,C,d,E 所以現在php implode爆炸可以做到這一點?

$data= "a,b,c,d,e"; 

例如:要添加新數據---毫升,保存到分貝GG 最終值將be

$finaldatatobeupdatedintodb= "a,b,c,d,e,cc,gg"; 

檢索出並添加更少的值。

然後將其追回到逗號列表中。

如何純粹使用implode並爆炸,而無需將其放入數組以重建/重新添加具有新值的東西?

+1

你可以對這個問題進行重新說明,以便它更連貫一些,更容易理解? – 2009-08-10 20:49:33

回答

2
$finaldatatobeupdatedintodb = $data . ',cc,gg'; 

這就是你需要的嗎?確切地理解你的問題所要求的是很難的。

4

如果你真的想用explodeimplode,你可以做這樣的事情:

首先,爆炸你的字符串:

$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,在你提出的簡單的情況下,沒有必要對這樣一個複雜的一段代碼:串並置將是綽綽有餘;-)

優勢與陣列/爆炸/破滅依據的解決辦法是,你可以爆成一個字符串(比方說,例如,你可以對它進行排序)前的最後陣列上工作

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>"; 

?> 
1

羅布的答案相似,但可能是一個更穩健:

$final = $data . (strlen($data) ? "," : "") . "cc,gg"; 

,或者,如果你的額外值來作爲數組:

$newValues = array("cc", "gg"); 
$final = $data . (strlen($data) ? "," : "") . implode(",", $newValues); 
0

你能給爲什麼你需要存儲在數據庫中逗號分隔值更多的細節?通常情況下,您可以爲不同的離散值使用單獨的字段。如果您擁有固定數量的值,則可以使用SET字段類型。

通常最好的解決方案是使用單獨的表格。維基百科的年齡在Database normalization可能會有所幫助。