php implode explode可以做到吗?

时间:2009-08-10 17:18:15

标签: php explode implode

例如:从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进行纯粹的操作,而无需将其放入数组中以进行循环以重新添加/重新添加添加了新值的内容?

5 个答案:

答案 0 :(得分: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所示,在您呈现的简单情况下,不需要这么复杂的代码:字符串连接就足够了; - )

基于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的年龄可能会有所帮助。