В переменную $filename
записано имя загруженного файла. Получите расширение файла.
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$data = array(
0 => 'one',
1 => 'two',
2 => 'three',
3 => 'four',
4 => 'five'
);
Выведите содержимое массива нумерованным списком минимум тремя способами. Укажите, какой из них, по вашему мнению, лучший, и почему.
- Чревато ошибками, если индексы не с нуля и не по порядку. Обсчет размера массива на каждой итерации.
<ol>
<?php for ($i = 0; $i < count($data); $i++): ?>
<li><?php echo $data[$i]; ?></li>
<?php endfor; ?>
</ol>
- Нечитабельно. Сложно расширять при необходимости.
<ol>
<?php
echo implode(array_map(function($column) {
return '<li>'. $column .'</li>' ;
}, $data));
?>
</ol>
- Лучшая читабельность. Расширение функционала не будет представлять проблем.
<ol>
<?php foreach ($data as $number): ?>
<li><?php echo $number; ?></li>
<?php endforeach; ?>
</ol>
Оптимизируйте код и укажите, что плохо в данном:
$r = mysql_query('SELECT * FROM `products` WHERE `category` = "'.$category.'"');
$on_stock = 0;
while ($row = mysql_fetch_assoc($r)) {
$on_stock = $on_stock + $row['on_stock'];
}
echo 'On stock: '.$on_stock;
- Не "говорящая" о своем содержимом переменная
$r
. - Функция
mysql_query
считается устаревшей с 5.5.0 и с 7 по дефолту удалена. - В запросе sql-инъекция.
- Запрос тяжелый для текущей задачи.
- Ну, и
$on_stock = $on_stock + $row['on_stock'];
можно переписать как$on_stock += $row['on_stock'];
для пущей красоты.
$stmt = $pdo->prepare("SELECT SUM(on_stock) as sum_on_stock FROM products WHERE category = ?");
$stmt->execute(array(
$category
));
$sum = $stmt->fetchColumn();
echo 'On stock: '. $sum;
Существует таблица gallery
, в которой хранятся фотографии:
| id (int) | title (varchar) | author (int) | filename (varchar) | views (int) |
Получите максимальное значение отношения "сумма просмотров фотографий одного автора / количество фотографий одного автора".
SELECT SUM(views) / COUNT(*) as ratio
FROM gallery
GROUP BY author
ORDER BY ratio DESC
LIMIT 1
Напишите на JavaScript функции, аналогичные php-функциям in_array(), trim(), asort().
function in_array(needle, haystack, isStrict)
{
if (needle.constructor === Array) {
var result = needle.filter(function(item) {
return haystack.indexOf(item) > -1;
});
return result.length == needle.length;
}
var key = '';
var strict = !!isStrict;
if (strict) {
for (key in haystack) {
if (haystack[key] === needle) {
return true;
}
}
} else {
for (key in haystack) {
if (haystack[key] == needle) {
return true;
}
}
}
return false;
}
function trim(string, charlist)
{
var whitespace;
var length = 0;
var i = 0;
var string += '';
if (!charlist) {
whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
} else {
// preg_quote custom list
charlist += '';
whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');
}
length = string.length;
for (i = 0; i < length; i++) {
if (whitespace.indexOf(string.charAt(i)) === -1) {
string = string.substringing(i);
break;
}
}
length = string.length;
for (i = length - 1; i >= 0; i--) {
if (whitespace.indexOf(string.charAt(i)) === -1) {
string = string.substringing(0, i + 1);
break;
}
}
return whitespace.indexOf(string.charAt(0)) === -1 ? string : '';
}
Функцию asort
с ее флагами стоит писать только за большой бутерброд. Без понятия что можно увидеть в ее реализации, кроме того, что человек любит заниматься ерундой.