|
|
|
| Добрий день!
Подскажите пожалсто как сделат из ассоциотивного array такого формата:
rray
(
[0] => Array
(
[pack_id] => 91047192880
[po_nummer] => 123 434 234 871
[nummerierung_packstueck] => 1
)
[1] => Array .........
)
такой
[0] => Array
(
[pack_id] => 91047192880
[p_nummer] =>123
=>234
=>434
=>871
[nummerierung_packstueck] => 1
)
[1] => Array .........
)
мне надо чтобы каждая запис в p_nummer была в новои стро4ке
толко не в коем слу4ае такои формат
[p_nummer] =>123
[p_nummer] =>234
[p_nummer] =>434
[p_nummer] =>871
мне надо в конце-концво показат ползователю толко
[p_nummer] =>123
=>234
=>434
=>871
можно как-то проходит [p_nummer] и при помощи if искать пробел ' ' и наидя пробел заменятъ его на '/n ' это будет работат? - я 4увствую 4то нет
Зарание спасибо | |
|
|
|
|
|
|
|
для: sirius1981
(18.11.2008 в 14:04)
| | Разбейте значение ключа [po_nummer] по пробелу и полученный массив присвойте этому же ключу. | |
|
|
|
|
|
|
|
для: sim5
(18.11.2008 в 14:21)
| | да но как это сделать? как передвигатся по ['po_nummer']
$j=0;;
for($i=0;$i<$count_1;++$i){
while($merge[$i]['po_nummer']){
if($merge[$i]['po_nummer'][$j]==' '){
$merge[$i][['po_nummer'][$j]='/n'
}
++$j;
}
} | |
|
|
|
|
|
|
|
для: Sirius1981
(18.11.2008 в 14:32)
| |
<?
$m = array(array(
'pack_id' => 91047192880,
'po_nummer' => '123 434 234 871',
'nummerierung_packstueck' => 1)
);
for ($i=0; $i<count($m); $i++) {
foreach ($m[$i] as $key => $val) {
if ($key == 'po_nummer' && !is_array($key)) {
$val = explode(" ", $val);
$m[$i][$key] = $val;
}
}
}
print_r($m);
|
| |
|
|
|
|
|
|
|
для: sim5
(18.11.2008 в 15:11)
| | O spasibo ogromnoe, sei4as budu experementirowat!!! | |
|
|
|
|
|
|
|
для: sim5
(18.11.2008 в 15:11)
| | Spasibo sa sowet, wsje rabotaet, tolko ne sowsem tak kak hotelos bi....
problema w tom 4to array m stanowitsja =4 m[4]
m[0]=>array[0]=>123
array[1]=>434
.
.
m[1]=>
m[2]=>
m[3]=>
kak sastawit ego detat tolko m[0]? | |
|
|
|
|
|
|
|
для: sirius1981
(27.11.2008 в 13:19)
| | Не понял, что значит m[4]? Будет столько проходов, сколько элементов в массиве, и преобразовываться будет только соответствующий ключ, и то при условии, если это уже не массив, а строка. | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 13:26)
| | polu4aetsja takaja schtu ka 4to ramer array m prinimaet sna4enie skolko ras on w foreach sahodit......
rasmer array m 1 m[0] i k nemu prenadleschschie 123
434....
m[0]=>array[0]=>123 434 234 871
(123 434 234 871) rasmer = 4
on mne uweli4iwaet rasmer rasmer do 4 m[0]=>array(.....) | |
|
|
|
|
|
|
|
для: Sirius1981
(27.11.2008 в 13:40)
| | Вы лучше полный исходный массив приложите, а то в этих каракулях... Если у вас строка равна "123 434 234 871", то полученный массив и будет содержать 4 элемента, конечно при условии, что нет лишних проблев в строке, в начале и конце, но их можно устранить - trim().
А так ничего не понял, что нужно. Давайте исходный массив, и пример того, что надо получить. | |
|
|
|
|
 37.5 Кб |
|
|
для: sim5
(27.11.2008 в 13:49)
| | wot w doc w wnjem opisana problema s ishodnikami i resultatami.... | |
|
|
|
|
|
|
|
для: Sirius1981
(27.11.2008 в 14:08)
| | Так чего вы хотите? У вас ведь ключ [po_nummer] содержит разный набор данных, а не только числа чинно разделенные проблом, как вы ранее показывали. А explode(), в коде, делит строку по пробелу, вот у вас и появляется бардак. То что пустые элементы массива получаются, я уже говорил, это из-за пробелов в конце и в начале строки может быть, убирайте их с помощью trim() перед тем как выполнить explode(). Приведите свои записи в исходнике к одному типу, разделив пробелом, и проблем не будет, иначе решайте эту проблему (разделение на массив) рег. выражениями. | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 14:38)
| | Ja sche array rasdelaju snakom ';'
i w foreach ja goworju:
foreach ($merge[$i] as $key => $val) {
if ($key == 'po_nummer' && !is_array($key)) {
$val = explode(";", $val);
$merge[$i][$key] = $val;
}
}
Sdes ja kak rasdelitelnii snako daju ' ; ' $val = explode(";", $val); | |
|
|
|
|
|
|
|
для: Sirius1981
(27.11.2008 в 14:08)
| | а если так?
<?php
// $a - исходный массив
// $b - массив с результатом
foreach($a as $a_key=>$a_val){
$b[$a_key][pack_id] = $a_val[pack_id];
$b[$a_key][nummerierung_packstueck] = $a_val[nummerierung_packstueck];
$b[$a_key][po_nummer] = explode(' ',$a_val[po_nummer]);
}
?>
|
| |
|
|
|
|
|
|
|
для: MIchail1982
(27.11.2008 в 15:01)
| | Не знаю. Делайте что хотите, у вас куча всевозможного в исходной строке. Либо строки приводите к одному, либо рег. выражения, либо то чего вы показываете, чего мне не понять, ибо вам виднее, что, от куда, чего, и куда... | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 15:10)
| | Да строку я же разделяю ' ; ' и в $val = explode(";", $val); я говорю же после ' ; ' должно быт разделение ; ?
Функция explode делит строку но блин почему она ещё в конце добовляет ешё одну строку
[0] => Array
(
[pack_id] => 91106925
[po_nummer] => 7108/1294;
[nummerierung_packstueck] => 1
)
resultat:
[0] => Array
(
[pack_id] => 91106925
[po_nummer] => Array
(
[0] => 7108/1294
[1] =>
)
[nummerierung_packstueck] => 1
) | |
|
|
|
|
|
|
|
для: Sirius1981
(27.11.2008 в 15:27)
| | Если ваша строка содержит, например - "1;2", то explode(";" $s) вернет вам массив с двумя элементами, первый равный 1, а второй 2. Если ваша строка содердит "1;", то explode(";" $s) вернет вам массив с двумя элементами, первый равный 1, а второй пустой. Другого объяснения нет. | |
|
|
|
|
|
|
|
для: Sirius1981
(27.11.2008 в 15:27)
| | и будет вам счастье....
ЗЫ добавлялся лишний, потомучто в конце стоял ";"
<?php
foreach($a as $a_key=>$a_val){
$a[$a_key][po_nummer] = explode(';',str_replace( ' ','',substr($a_val[po_nummer],0,strlen($a_val[po_nummer])-1)));
}
?>
|
| |
|
|
|
|
|
|
|
для: MIchail1982
(27.11.2008 в 15:54)
| | Вместо этого достаточно сделать rtrim(string, ";"). | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 16:21)
| | не факт, rtrim тут не сработал бы, т.к он работает ДО explode. и если бы пробелы были внутри(а так и было) то 1й элемент начинался бы с пробела | |
|
|
|
|
|
|
|
для: MIchail1982
(27.11.2008 в 16:51)
| | Эта "хреновина" вырезает то, что я укажу ей, и только в конце строки.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: sim5
(27.11.2008 в 16:56)
| | rebjata spasibo wsem wam sa pomosch. | |
|
|
|