Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по поводу массива 
:(
    Опции темы
NetFlame
  Дата 26.9.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



Есть такой вопрос. Может ли значение в массиве иметь адрес $var[44-1-4] ?
PM MAIL WWW ICQ   Вверх
console
Дата 26.9.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 2
Всего: 3



deleted...

Это сообщение отредактировал(а) console - 26.9.2007, 16:51


--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 26.9.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Может, это равносильно $var[39] ;). И $var['44-1-4'] может.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
console
Дата 26.9.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 2
Всего: 3



хммм... точно, арифметика... ох PHP )

Добавлено через 37 секунд
Я думал в другом контексте


--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
NetFlame
Дата 26.9.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



так что, нельзя значит?
PM MAIL WWW ICQ   Вверх
WolfON
Дата 26.9.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: 6
Всего: 8



можно. почему-бы и нет? smile
PM MAIL ICQ   Вверх
NetFlame
Дата 26.9.2007, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



попробую..

Добавлено через 6 минут и 51 секунду

Тогда вопрос из тойже темы.

В форме есть инпуты, очень много, с именами line-xxx-y и line-xxx

Как их переписать в другую форму, чтобы они стали массивом line[xxx-y] или line[xxx] , используя preg_replace и foreach ... as ....

Где xxx - любые три числа и y - любое однозначное число?

Заранее спасибо!
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 26.9.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



NetFlame, из формы индексы в любом случае приходят как строки, так что поля можете смело называть line[xxx-y].


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
NetFlame
Дата 26.9.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



А как тогда сделать их массовый вывод?

типа 

foreach( $_POST['line'] as $line_number => $line ) echo "<input type=\"hidden\" name=\"line[{$line_number}]\" value=\"{$line}\">";

Это сообщение отредактировал(а) NetFlame - 26.9.2007, 21:11
PM MAIL WWW ICQ   Вверх
Guedda
Дата 26.9.2007, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



да.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
NetFlame
Дата 26.9.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



Вообще-то, я спросил как  smile 
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 26.9.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



NetFlame, но в Вашем вопросе был приведен вполне работоспособный код для этой задачи;). 


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
console
Дата 26.9.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 2
Всего: 3



NetFlame, когда не уверен или не знаешь как, делай print_r($_POST);


--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
NetFlame
  Дата 27.9.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



Не получается у меня вставить в файл...

Пример:

Есть файл re.php , с содержимым:

Код

<?php
$contents = "<form action=..... method=post>"

."</form>";

.....// далее какие-то php-функции
?>


Вместо второй строки нужно вывести в этот файл полученный массив, чтобы файл стал таким:

Код

<?php
$contents = "<form action=..... method=post>"
."<input type=\"hidden\" name=\"line[100-1]\" value=\"ns9\">"
."<input type=\"hidden\" name=\"line[100-10]\" value=\"mx7\">"
."<input type=\"hidden\" name=\"line[100-20]\" value=\"soa6\">"
."<input type=\"hidden\" name=\"line[100-22]\" value=\"mx5\">"
."<input type=\"hidden\" name=\"line[100-12]\" value=\"soa4\">"
."<input type=\"hidden\" name=\"line[100-13]\" value=\"mx2\">"
."<input type=\"hidden\" name=\"line[100-15]\" value=\"ns1\">"
."</form>";

.....// далее какие-то php-функции
?>


Я делаю так ( сторонний php-файл ):

Код

$fl = "re.php";
$line = 3;
foreach( $_POST['line'] as $line_number => $line ) $rep =  ".\\"<input type=\\"hidden\\" name=\\"line[{$line_number}]\\" value=\\"{$line}\\">";
$file = file($fl);
$count = count($file);
$fp = fopen($fl,"w");
for($i=0;$i<$count;$i++) 
{
if($i!=$line-1)
{
fwrite($fp,$file[$i]);
}
else
{
fwrite($fp,"$rep");

echo "Записано!";
}
}
fclose($fp); 


В результате - просто удаляется третья строка - и всё!
 smile  smile 
PM MAIL WWW ICQ   Вверх
console
Дата 27.9.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 2
Всего: 3



Возможно имелось ввиду:
Код

foreach( $_POST['line'] as $line_number => $line ) $rep .=  ".\\"<input type=\\"hidden\\" name=\\"line[{$line_number}]\\" value=\\"{$line}\\">";


а не
Код

foreach( $_POST['line'] as $line_number => $line ) $rep =  ".\\"<input type=\\"hidden\\" name=\\"line[{$line_number}]\\" value=\\"{$line}\\">";



--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
NetFlame
Дата 27.9.2007, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



Нет, мы больше не придаем значений этой константе.

Добавлено @ 12:50
Может быть просто массив пустой, вот он и вставляет 0 символов...

Добавлено @ 12:56
А возможная причина такова:

у меня на странице

Код

....

<input type=text name="line-124-1" size=30 value="апрпрпр">
<input type=text name="line-145-5" size=30 value="парпарпар">
<input type=text name="line-170-41" size=30 value="парене">
<input type=text name="line-180-8" size=30 value="парпрпар">
<input type=text name="line-160-9" size=30 value="парпрпрпо">
<input type=text name="line-170-0" size=30 value="парпарпрпа">

.....


А я их вызываю $_POST['line'] as $line_number => $line

Где тут сопоставление name="line-124-1" и $_POST['line'] ?

В массиве адресация значений какая получается? 

 smile 

Это сообщение отредактировал(а) NetFlame - 27.9.2007, 12:57
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 27.9.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Дык это другая ситуация - тут массива не получается. Я-то думал, что Вы уже изменили имена именно на начальной странице...

Разве что как-то так:
Код

foreach ($_POST as $name=>$value) {
     list ($new_name, $number) = explode('-', $name, 2);
     $$new_name[$number] = $value;
}
но это, имхо, тот еще изврат...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
NetFlame
Дата 27.9.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



Согласен. Попробую подумать, как сделать всё это с помощью mysql  smile 
PM MAIL WWW ICQ   Вверх
NetFlame
Дата 27.9.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



А как можно сделать так:

1. Получаем значения. Например, они

Код

<input type=text name="line-124-1" size=30 value="апрпрпр">
<input type=text name="line-145-5" size=30 value="парпарпар">
<input type=text name="line-170-4" size=30 value="парене">
<input type=text name="line-180-8" size=30 value="парпрпар">
<input type=text name="line-160-9" size=30 value="парпрпрпо">
<input type=text name="line-170-0" size=30 value="парпарпрпа">


2. Переписать их в

Код

<input type=text name="line[1241]" size=30 value="апрпрпр">
<input type=text name="line[1455]" size=30 value="парпарпар">
<input type=text name="line[1704]" size=30 value="парене">
<input type=text name="line[1808]" size=30 value="парпрпар">
<input type=text name="line[1609]" size=30 value="парпрпрпо">
<input type=text name="line[1700]" size=30 value="парпарпрпа">


то есть убрать между ними тире и загнать в массив.

3. Далее после нажатия кнопки Сохранить сделать их обратно такими

Код

<input type=text name="line-124-1" size=30 value="апрпрпр">
<input type=text name="line-145-5" size=30 value="парпарпар">
<input type=text name="line-170-4" size=30 value="парене">
<input type=text name="line-180-8" size=30 value="парпрпар">
<input type=text name="line-160-9" size=30 value="парпрпрпо">
<input type=text name="line-170-0" size=30 value="парпарпрпа">


одновременно записывая ее ( новый вариант (например, line-180-8) ) в файл?
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 27.9.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



NetFlame, конечно можно, "но зачем такая страсть?" ©

Не проще ли использовать массив везде?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
CyClon
Дата 27.9.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Может.

Код
<?php

$array1['44-1-4'] = TRUE;
$array2[44][1][4] = TRUE;

?>


$array2 - возможное решение проблемы автора smile Мне кажется, ему нужны многомерные массивы, а не индексы в виде строк smile

Добавлено через 11 минут и 43 секунды
Цитата(NetFlame @ 27.9.2007,  18:36)
А как можно сделать так:

1. Получаем значения. Например, они

Код

<input type=text name="line-124-1" size=30 value="апрпрпр">
<input type=text name="line-145-5" size=30 value="парпарпар">
<input type=text name="line-170-4" size=30 value="парене">
<input type=text name="line-180-8" size=30 value="парпрпар">
<input type=text name="line-160-9" size=30 value="парпрпрпо">
<input type=text name="line-170-0" size=30 value="парпарпрпа">


2. Переписать их в

Код

<input type=text name="line[1241]" size=30 value="апрпрпр">
<input type=text name="line[1455]" size=30 value="парпарпар">
<input type=text name="line[1704]" size=30 value="парене">
<input type=text name="line[1808]" size=30 value="парпрпар">
<input type=text name="line[1609]" size=30 value="парпрпрпо">
<input type=text name="line[1700]" size=30 value="парпарпрпа">


то есть убрать между ними тире и загнать в массив.

3. Далее после нажатия кнопки Сохранить сделать их обратно такими

Код

<input type=text name="line-124-1" size=30 value="апрпрпр">
<input type=text name="line-145-5" size=30 value="парпарпар">
<input type=text name="line-170-4" size=30 value="парене">
<input type=text name="line-180-8" size=30 value="парпрпар">
<input type=text name="line-160-9" size=30 value="парпрпрпо">
<input type=text name="line-170-0" size=30 value="парпарпрпа">


одновременно записывая ее ( новый вариант (например, line-180-8) ) в файл?

Первый и второй пункт:

Код
<?php

// < DEBUG
$_POST['line-123-46-10'] = TRUE;
$_POST['line-554-01-43'] = TRUE;
$_POST['line-156-12-79'] = TRUE;
$_POST['line-785-48-75'] = TRUE;
$_POST['line-999-44-43'] = TRUE;
// > DEBUG

foreach ($_POST as $key => $value) {
    if (strpos($key, 'line') !== FALSE) {
        $key = str_replace('-', '', substr($key, 4));
        $line[$key] = $value;
    }
}

print_r($line);

?>



--------------------
user posted image
PM   Вверх
NetFlame
Дата 28.9.2007, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



1. Имeна у меня могут быть только вида line-xxx-y, никаких line-123-46-10 быть не может, так как ориентирование в документе осуществляется по строкам (xxx) и количеству позиций (y) в строке. Строк может быть сколь угодно, а позиций - минимум 0, максимум 9.

2. CyClon, в Вашем коде,  строки $_POST['line-123-46-10'] = TRUE; ... не понятны, если так нужно делать для каждой переменной, то возможности у меня такой нет - так как каждый раз новое приходит не фиксированное количество инпутов, с разными именами...

Я думал, что сначала можно было загнать полученные значения в массив, а потом, ориентируясь на их номер в массиве, восстановить прежние имена.
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.