|
|
|
| Здравствуйте, у меня есть ключи массива $m[$mij]. Массив одномерный, print_r($m); дает следующее ниже
Array ( [m00head742] => код [m01body1985] => 1 [m35row5head745] => [m40] => [m41col4cat224col4cat224] => [m44col4cat224col4cat224] =>
[m45col4cat224col4cat224row5head] => )
|
С помошью имени я передаю цифровое значение, по другому проблематично
как можно вообще выцеплять из m41col4cat224col4cat224 например значение 41 или 4 между col и cat. Значения буквенные нам известны, выцеплять нужно цифры в промежутках
можно как-то, пока не знаю с помошью функций strtok(), но там с версиями заморока, а надо точно, подскажите | |
|
|
|
|
|
|
|
для: Артем125
(11.10.2009 в 17:41)
| | пожалуй самое простое - регуляркой.
preg_match_all('/([a-z]+)([0-9]+)/', $code, $res);
|
и array_combine докучи. | |
|
|
|
|
|
|
|
для: Trianon
(11.10.2009 в 18:01)
| | а как например с помощью регулярки из m41col4cat224col4cat224 вытащить 224, или 41
$k = 'm41col4cat224col4cat224';
echo 'k='.$k.'<br>';
preg_match_all('/([a-z]+)([0-9]+)/', $k, $res);
print_r($res);
|
Array ( [0] => Array ( [0] => m41 [1] => col4 [2] =>
cat224 [3] => col4 [4] => cat224 ) [1] => Array ( [0] =>
m [1] => col [2] => cat [3] => col [4] => cat ) [2] =>
Array ( [0] => 41 [1] => 4 [2] => 224 [3] => 4 [4] => 224 ) )
|
как понял, дальше собрать надо, а что с чем? | |
|
|
|
|
|
|
|
для: Артем125
(11.10.2009 в 18:13)
| | Вам нужно извлечь все числа или числа с определнным количеством цифр? | |
|
|
|
|
|
|
|
для: cheops
(11.10.2009 в 18:28)
| | строка число, строка число, например cat 224 , желательно ключь cat => 224 | |
|
|
|
|
|
|
|
для: Артем125
(11.10.2009 в 18:30)
| | Тогда можно отталкиваться от следующего скрипта
<?php
// Получаем содержимое файла
$code = 'm41col4cat224col4cat224';
preg_match_all('/([a-z]+)([0-9]+)/', $code, $res);
$result = array();
if(!empty($res[1]))
{
for($i = 0; $i < count($res[1]); $i++)
$result[$res[1][$i]] = $res[2][$i];
}
echo "<pre>";
print_r($result);
echo "<pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.10.2009 в 18:35)
| | работает, спасибо ))), | |
|
|
|
|
|
|
|
для: Артем125
(11.10.2009 в 18:30)
| | Я же написал - и array_combine докучи.
Один вызов функции - и задача решена.
$res = array_combine($res[1], $res[2]);
|
| |
|
|
|
|
|
|
|
для: Trianon
(11.10.2009 в 18:39)
| | Я недопонял выражение "докучи", Спасибо | |
|
|
|
|
|
|
|
для: Артем125
(11.10.2009 в 17:41)
| | еще неприятность, зависает
<?php
$table = '';
// Формирование таблицы из массива
for ($i = 0; $i < $kol_rows_table_new; $i++)
{
$table = $table.'<tr>';
for ($j = 0; $j < $kol_сolumns_table_new; $j++)
{
foreach ($m as $key => $v)
{
preg_match_all('/([a-z]+)([0-9]+)/', $key, $res);
$result = array();
if(!empty($res[1]))
{
for($i = 0; $i < count($res[1]); $i++)
$result[$res[1][$i]] = $res[2][$i];
}
//echo $result['m'];
if ($result['m'] == strval($j.$i))
{
$mij = $key;
$val = $v;
break;
}
//echo $key.'<br>';
}
$value = ' ';
if (isset($m[$mij])) $value = $val;
$table = $table.'<td class="price_td"><input type="text" name="5" size="10" maxlength="256" value="'.$value.'"></td>'."\n";
}
$table = $table.'</tr>';
}
?>
|
Как получить значение индекса $mij | |
|
|
|
|
|
|
|
для: Артем125
(11.10.2009 в 20:28)
| | Вот решение проблемы, пришлось кодировать ключи так m:00:head:742
$table = '';
// Формирование таблицы из массива
for ($i = 0; $i < $kol_rows_table_new; $i++)
{
$table = $table.'<tr>';
for ($j = 0; $j < $kol_сolumns_table_new; $j++)
{
$ji = strval($j.$i);
foreach ($m as $key => $v)
{
$explode = (explode(":", $key));
$value = '5';
if ($explode[1] == $ji)
{
if (isset($v)) $value = $v;
$table = $table.'<td class="price_td"><input type="text" name="'.$key.'" size="10" maxlength="256" value="'.$v.'"></td>'."\n";
}
}
}
$table = $table.'</tr>';
}
|
Выражаю большую благодарность всем ответившим ! | |
|
|
|