Acraft
Новичок
Созд. нов. массив,используя один массив в кач. ключей,а другой в кач. соотв. значений
Я хотел написать скрипт который позволял бы выбирать элементы массива $list_tmp и задавать порядок следования выбранных элементов.
Т.е. выводится массив а напротив каждого элемента находится элемент формы "text", где я проставляю порядковый номер элемента.
После обработки выбранные элементы массива образуют массив $list и следуют именно в том порядке который я им задал. Использовать array_combine() не могу, т.к. работаю с PHP4
Идея алгоритма проста - из формы получаем 2 массива: $list_tmp - массив слов, $consecution - массив с цифрами, который отображают порядок в котором должены быть отсортированы выбранные элементы $list_tmp
В цикле от $i=0 до размера любого из 2-х массивов заполняем третий массив $list(mas[$i]))=$list_tmp[mas[$i]]
По моему, алгоритм должен работать, но тем не менее $list заполняется не в нужном порядке (почему отловить не могу).
Такой вот код, чтобы в примере избавиться от работы с базой, здесь используется заранее объявленный массив list_tmp.
Возможно будут комментарии не только по коду, но и по алгоритму. С удовольствием выслушаю.
Я хотел написать скрипт который позволял бы выбирать элементы массива $list_tmp и задавать порядок следования выбранных элементов.
Т.е. выводится массив а напротив каждого элемента находится элемент формы "text", где я проставляю порядковый номер элемента.
После обработки выбранные элементы массива образуют массив $list и следуют именно в том порядке который я им задал. Использовать array_combine() не могу, т.к. работаю с PHP4
Идея алгоритма проста - из формы получаем 2 массива: $list_tmp - массив слов, $consecution - массив с цифрами, который отображают порядок в котором должены быть отсортированы выбранные элементы $list_tmp
В цикле от $i=0 до размера любого из 2-х массивов заполняем третий массив $list(mas[$i]))=$list_tmp[mas[$i]]
По моему, алгоритм должен работать, но тем не менее $list заполняется не в нужном порядке (почему отловить не могу).
Такой вот код, чтобы в примере избавиться от работы с базой, здесь используется заранее объявленный массив list_tmp.
PHP:
<?
if (isset($_POST['subm']))
{
$list=Array();
$consecution=Array();
$keys_array=array_keys($_POST);
for ($i=0; $i<sizeof($keys_array); $i++)
{
if (substr($keys_array[$i],0,strpos($keys_array[$i],'_'))=='consec')
{
if (trim($_POST[$keys_array[$i]])!='')
{
$consecution[sizeof($consecution)]=trim($_POST[$keys_array[$i]])-1;
}
}
}
?><hr><table width=100% border=1><?
for ($i=0; $i<sizeof($_POST['list_tmp']); $i++)
{
?>
<tr>
<td><?echo $_POST['list_tmp'][$i];?></td>
<td><?echo $consecution[$i];?></td>
<td><?echo 'list['.$consecution[$i].']=list_tmp['.$consecution[$i].'] -- '.$_POST['list_tmp'][$consecution[$i]].'<br>';?></td>
</tr>
<?
$list[$consecution[$i]]=$_POST['list_tmp'][$consecution[$i]];
}
?></table><hr><?
ksort($list);
// echo sizeof($_POST['list_tmp']).'<br>';
// echo sizeof($list).'<br>';
for ($i=0; $i<sizeof($list); $i++)
{
echo $list[$i].'<br>';
}
exit();
}
$list_tmp=Array('list_1','list_2','list_3','list_4','list_5','list_6','list_7','list_8','list_9','list_10',);
?>
<center>
<form name="form_1" action="002.php" method="POST">
<table border="0">
<?
$k=0;
for ($i=0; $i<sizeof($list_tmp); $i++)
{
?>
<tr>
<td><input type="checkbox" name="list_tmp[]" value="<?echo $list_tmp[$i]?>"></td>
<td><?echo $list_tmp[$i];?></td>
<td><input type="text" name="consec_<?echo $k;?>" value="" size="2"></td>
</tr>
<?
$k++;
}
?>
</table>
<input type="submit" name="subm" value="Submit">
</form>
