Привет! Вот опять сижу с учебником по PHP, делаю упражнение из этого учебника, всё вроде выполняется, но в конце получаю такую ошибку:
Notice: Undefined offset: 3 in z:\home\localhost\www\study\less15.php on line 73
Насколько я понимаю, то проблема в уловии цикла for, другими словам я выхожу за пределы массива. Строку в которой происходит ошибка я помети коментарием. Вот код:
| Код | <html>
<head> <title>Наследование классов</title> </head>
<body>
<?php
// Начало класса book class book { var $title, $author, $col_pages, $price, $col_book;
function book( $arr_list, $tirage = 200000 ) { list( $this->title, $this->author, $this->col_pages, $this->price ) = $arr_list; $this->col_book = $tirage; }
function get_title() { return( "\"<font color='#ff0000'>" . $this->title . "</font>\"<br><i><font color='#009900'>" . $this->author . "</font></i><br>" ); }
function get_page_price() { return( $this->price / $this->col_pages ); }
function get_tirage_price() { return( $this->price * $this->col_book ); } }
// Начало класса book_with_CD с наследованием от класса book class book_with_CD extends book { var $col_CD, $price_CD; // одного
function book_with_CD( $arr_list, $tirage ) { list( $this->title, $this->author, $this->col_pages, $this->price, $this->col_CD, $this->price_CD ) = $arr_list; $this->col_book = $tirage; }
function get_total_price() { return( $this->price + ( $this->col_CD * $this->price_CD ) ); }
function get_tirage_price() { return( $this->get_total_price() * $this->col_book ); } }
?>
<h3>Информация о книгах на складе</h3>
<?php
// Создаём объекты $books[] = new book( array("Сказка о тройке", "Аркадий и Борис Стругацкие", 527, 6 ), 170000 ); $books[] = new book( array( "В дебрях Борнео", "Майн Рид", 315, 5 ) ); $books[] = new book_with_CD( array( "Программирование в Windows 95. Освой самостоятельно", "Чарльз Калверт", 1000, 90, 2, 30 ), // Два CD-ROM по 30 рублей 7000 ); // Тираж 70000
$max_price = 0;
for ( $i = 0; $book = $books[ $i ]; $i++ ) { // ВОТ В ЭТОЙ СТРОКЕ ОШИБКА if ( ( $tirage_price = $book->get_tirage_price() ) > $max_price ) { $best = $book; $max_price = $tirage_price; } echo "<br>Книга: ". $book->title . "<br>Стоимость тиража $tirage_price<br><br>"; }
?>
<hr><br><h3>Большая стоимость тиража у книги:
<?php
echo "<font color='#ff0000'>" . $best->title . "</font>";
?>
</h3>
</body>
</html>
|
Пробовал изменить условие в цикле for, на такое $book = $books[ $i ] and $i <= 2, результат тот же.
Вопросы: Что не так? Я правильно понял причину ошибки? Как в PHP вычислить количество элементов массива, аналог в Perl - my $elements = @arr?
Заранее благодарен за ответ, Денис |