Здравствуйте, не понимаю механизма сравнивания многомерного массива созданной функцией priceCmp. Код (Text): <?php $products = array( array( name=> "HAL 2000", price => 4500.5 ), array( name => "Tricorder", price => 55.5 ), array( name => "ORAC AI", price => 2200.5 ), array( name => "Sonic Screwdriver", price => 22.5) ); function priceCmp ( $a, $b ) { if ( $a[price] ) return 0; if ( $a[price] < $b[price] ) return -1; return 1; } usort( $products, priceCmp ); foreach( $products as $val ) print "$val[name]: $val[price]<br>\n"; ?> Вот первый оператор if Код (Text): if ( $a[price] ) return 0; в книге написано, что он сравнивает два агрумента и возвращает 0 если они равны, не понимаю как он их сравнивает, я тут вообще не вижу массива $b. Объясните пожалуйста. Заранее спасибо.
там ошибка. во-первых, в первом if, должно быть $a[price] == $b[price] а во-вторых - то, что в квадратных скобках надо брать в кавычки: $a['price']
PHP: function priceCmp( $a, $b) { if ($a['price'] == $b['price']) return 0; return ($a['price'] < $b['price']) ? -1 : 1; }
TheShock Сорри за глупый вопрос, но почему нужно брать в кавычки то, что в квадратных скобках, у меня в учебнике не берется, и все вроде бы работает.
skv_79, у тебя устаревший учебник. Добавь после первого <?php следующую строку и ты удивишься PHP: <?php error_reporting (E_ALL);