Имеется форма: <form id="add" method="POST" action="addexec.php"> <input type="checkbox" name="idroot[0]">Надпись 1<br /> <input type="checkbox" name="idroot[1]">Надпись 2<br /> <input type="checkbox" name="idroot[2]">Надпись 3<br /> <input type="checkbox" name="idroot[3]">Надпись 4<br /> <input type="submit" value="Добавить!"></td> </form> Если установить галки,например, на первом и четвертом чекбоксе,и нажать на кнопку Добавить то в обработчик передается запрос: idroot%5B0%5D=on&idroot%5B3%5D=on Обработчик имеет следующее: ... for($i=0;$i<4;$i++){ echo $_POST['idroot'][$i].'</br>'; } ... В результате выполнения получается: on Notice: Undefined offset: 1 in D:\UsbWebserver\Root\addexec.php on line 36 Notice: Undefined offset: 1 in D:\UsbWebserver\Root\addexec.php on line 36 on Как получить значение не установленных чекбоксов?
PHP: <? for($i=0;$i<4;$i++){ @print $_POST['idroot'][$i].'</br>'; } ? Ты какое значение у неустановленных хочешь увидеть? off?
Не обязательно off, хотябы просто = 0. Дело в том, что пхп v4 это нормально обрабатывает и не установленные чекбоксы равны в этом массиве нулю. А в пхп v5 выдается вышеуказанная ошибка. Хотелось бы уяснить суть данного явления.
Тогда так: PHP: <? for($i=0;$i<4;$i++) { $_POST['idroot'][$i]?print $_POST['idroot'][$i].'</br>':print 'off<br>'; } Суть в разной обработке данных поулченый через $_POST в 4 и 5 версии.
Нонсенс. Ошибка эта была и в 4. это не ошибка а нотайс, неинициализированные переменные по дефолту интерпрeтируются как 0, false, ''
Ясно. Тогда правильно ли будет обрабатывать этот массив следующим образом: if(isset($_POST['idroot'][$i])) echo 'on </br>'; else echo 'off </br>; для того, чтобы избежать вывод Notice? Или существуют другие методы, доступные только великим мира сего?
А если сделать так PHP: <?php foreach (&$Array as $key=>$val) if ($key === 'string1') $val++; ?> Тож будет работать с копией ?
Professor Если указать массив, то foreach будет работать с копией массива. Если указать указатель на массив, то foreach будет работать с копией массива на который указывает указатель :-D
stas_t ты про PHP: <?php $array = range(1, 5); foreach ($array as $k => &$v) { $v++; } $v = 10; print_r($array); ?