Почему не то? В массиве $arrB собраны все положительные числа из массива $arrA, где индекс - четное число.
Если вы хотите еще и индекс из массива вытащить то измените
Простыми словами.
-- Статическое свойство для чего?
На примере процедурного стиля:
Задача:
Вам нужно вывести комментарии пользователей к какой-то статье из базы данных или файла или бог знает откуда еще...
И при этом как-то обработать их, на пример, заменить символы в строке типа "" или ":-D" на картинку со смайликами.
Пишем простую функцию для замены: (для примера будем использовать strtr()) // синтаксис PHP 5.4+
на выходе мы имеем строку уже с картинками вместо '',':-D'.
Данная функция правильно отрабатывает, НО!
Если вы хотите вывести все 50 комментариев , то вы будете 50 раз вызывать эту функцию и инициализация массива с заменой смайлов, будет происходить так же 50 раз.
Поэтому целесообразно массив объявить статическим, добавив static. Создастся он всего один раз. Ведь мы не меняем его и не передаем в функцию из вне... он всегда один и тот же.
Примерно то же самое и в объектах. Где это используется?
Далеко ходить не буду. Работа с Базой данных и паттерн singleton
Вы описываете свой класс, который подключается к базе данных.
Вы можете его унаследовать, но в каких-то местах, это не получится и вам опять придется соединиться с базой данных.
Что бы не плодить объекты, используем singleton.
На пример, по простому опишем свой класс для создания соединения с БД Mysql с помощью PDO:
--
Теперь о статических методах
Вы решили создать какой-то класс с помощью которого вы хотите как-то очищать входящие данные. Там много всяких, разных метотодов... мы создадим такой, но с одним методом. для примера.
Что он делает? Да ничего особенного, метод clearString удаляет все теги,пробелы в строке и возвращает обратно;
И вот, наступил момент, когда вам где-то понадобился этот метод. Что нужно сделать что бы он было доступен? Правильно. Создать экземпляр класса Validator и вызвать этот метод.
Что мы сделали? Создали объект ради одного метода.А ведь сам объект может нам и не понадобится никогда. Поэтому сделаем его статическим. Для того, что бы можно было воспользоваться этим методом не создавая сам объект.
Перепишем класс и объявим метод clearString статическим:
В какой кодировке база данных хранит данные, абсолютно не имеет никакого значения. Хоть в "китайских иероглифах" храните. т.е. без разницы, что там cp1251_general_ci, что utf-8_general_ci. Значение имеет только то, какую кодировку вы используете при подключении к базе.
--
Если вы хотите получить данные в кодировке utf-8, то после соединения с БД, установите кодировку соединения с помощью функций:
driver::mysql
new PDO('mysql:host=server;dbname=nameBase;charset=utf-8','username','password');
--
Указывать кодировку с помощью mysql/i_query('SET NAMES 'utf8'');
как сказано постом выше caballero, не рекомендуется
об этом написано в документации php.net, можете почитать, там все расписано про кодировки и как нужно их указывать при соединении..
--
Идем дальше...
Если используете web-server Apache, можете добаить в файлик .htaccess директивы
и можете смело выкинуть из всех фалов header("Content-Type: text/html; charset=utf-8");
Заголовки всегда будут отдавать charset=utf-8
-- Перекoдируйте все ваши файлы в utf-8!!!
--
В HTML, в тег <html>, добавьте атрибут lang
Данная директива отвечает за возможность использовать HTTP и FTP ссылки в большинстве функций, принимающих в качестве параметра имя файла. (В вашем случае - fopen)
Если ini_get('allow_url_fopen') вернул ноль или пустую строку, то соответственно, она выключена.
Такое встречается на бесплатных хостингах.
C помощью ini_set() изменить её нельзя, поэтому, если вы имеете доступ к php.ini, то найдите там эту директиву и выставьте её в значение ON.