2009-08-10 4 views
-3

например: существующие данные извлечь из поля БД: а, б, в, г, д так что теперьphp explode explode может это сделать?

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

например: новые данные, которые будут добавлены --- куб.см, GG окончательное значение сохраняется в БД будет be

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

Извлеките и добавьте еще несколько значений.

Затем добавьте его обратно в список запятой.

Как сделать это исключительно с помощью взрыва и взрыва, без необходимости помещать его в массив для цикла, чтобы восстановить/повторно добавить вещь с добавленными новыми значениями?

+1

Можете ли вы переформулировать этот вопрос, чтобы он стал более последовательным и понятным? –

ответ

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

Это то, что вам нужно? Трудно понять, что именно задает ваш вопрос.

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, в простом случае, вы представляете, нет никакой необходимости в такой сложной части кода: строки конкатенации будет более чем достаточно ;-)

Преимущество массива/взрываются/взрываться на основе решения является то, что вы можете работать на конечный массив, прежде чем взрывается в строку (скажем, к примеру, вы можете отсортировать их)

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 может помочь.

 Смежные вопросы

  • Нет связанных вопросов^_^