如何处理我的数据?

时间:2012-03-10 22:39:52

标签: php html concatenation

编辑:我的方法的目的是从数据库中的字符串中删除一个值。

我似乎无法在任何地方找到答案。你可以在这样的str_replace中连接:

str_replace($pid . ",","",$boom);
  • $ pid是页面ID,例如40
  • $ boom是一个爆炸阵列

如果我有一个字符串:40,56,12我想把它变成56,12但是如果它没有连接器会产生:

  

,56,12

当我在str_replace中有concat它没有做任何事情。这可能吗?

5 个答案:

答案 0 :(得分:2)

回答你的问题:是的,你可以。该代码可以按照您的预期运行。

但这种做法是错误的。它不适用于$pid = 12;(最后一个元素,没有尾随昏迷),并且会错误地替换40,中的$boom = '140,20,12';

你应该将它保存在数组中,搜索不需要的值,如果发现它从数组中取消设置,然后以昏迷内爆。

$boom = array_filter($boom);
$key = array_search($pid, $boom);
if($key !== false){
    unset($boom[$key]);
}
$boom = implode(',',$boom);

[+]您的代码不起作用,因为$boom是一个数组,而str_replace是对字符串进行操作。

答案 1 :(得分:2)

由于$ boom是一个数组,你不需要在你的情况下使用数组。

更改此

$boom = explode(",",$ticket_array);
$boom = str_replace($pid . ",","",$boom);
$together = implode(",",$boom);

$together = str_replace($pid . ",","",$ticket_array);

更新:如果您还想使用数组

$boom = explode(",",$ticket_array);
unset($boom[array_search($pid, $boom)]);
$together = implode(",",$boom);

答案 2 :(得分:1)

编辑完成后,您可以清楚地想要从包含一个数字的数组$pid中删除$boom的值。您可以使用array_search查找是否在哪个键中。然后,您可以unset $boom中的元素:

$pid = '40';
$boom = explode(',', '40,56,12');
$r = array_search($pid, $boom, FALSE);
if ($r !== FALSE) {
    unset($boom[$r]);
}

老问题:

  

你能在这样的str_replace中连接:...?

是的,你可以,见例:

$pid = '40';
$boom = array('40,56,12');
print_r(str_replace($pid . ",", "", $boom));

结果:

Array
(
    [0] => 56,12
)

这与你的非常相似,所以你可能会在错误的地方寻找问题。您可以使用任何字符串表达式作为参数。

如果您不确定首先创建变量,可能会更容易:

$pid = '40';
$boom = array('40,56,12');
$search = sprintf("%d,", $pid);
print_r(str_replace($search, "", $boom));

答案 3 :(得分:1)

你可以使用str_split,它将一个字符串转换为一个数组,然后使用foreach循环回显除第一个之外的所有值。

$numbers_string="40,56,12";
$numbers_array = str_split($numbers_string);
//then, when you have the array of numbers, you could echo every number except the first separating them with a comma
foreach ($numbers_array as $key => $value) {
  if ($key > 0) {
    echo $value . ", ";
  }
}

如果你想要跳过一个值而不是它在数组中的位置,但是对于它的值,那么你可以这样做:

$unwanted_value="40";
foreach ($numbers_array as $key => $value) {
  if ($value != $unwanted_value) {

    echo $value . ", ";
  }
  else {
    unset($numbers_array[$key]);
    $numbers_array = array_values($numbers_array);
    var_dump($numbers_array);

  }
}

答案 4 :(得分:1)

您应将“票证数组”存储在单独的表格中 并使用常规SQL查询(UPDATE,DELETE)来操作它。

数据库名称中的关系字是出于这个原因。你正在以这种野蛮的方式滥用这款智能软件。