#php
#php
Вопрос:
Я работаю над веб-приложением на основе PHP. Версия запущенного PHP — 5.2.x! У меня есть функция play
в программе, а также вызываемый массив $study
, определенный снаружи play
, содержащий несколько элементов.
function play( $games, $time ) {
//Do something here
$lol = array_search(strtolower($games), array_map('strtolower', $study['somevar']));
}
Теперь дело в том, что я вызываю play()
в другом месте своего кода, но, как вы можете видеть, я ссылаюсь $study['somevar']
, но функция принимает только два аргумента: $games
amp; $time
поэтому нет способа ссылаться на $study[‘somevar’] . Я знаю, что иногда в PHP это тоже работает
function play($games, $time) use ($study){
//do something
}
Но когда я пытаюсь запустить этот use
синтаксис в PHP 5.2, он выдает ошибку. Итак, как я могу это сделать? Есть идеи?
Редактировать 1:
Итак, это то, что выводит массив $study (который я пробовал вне функции)
echo $study['somevar'] : It prints out Array (English word "Array")
echo $study['somevar'][0] : It prints out blahblah (0th element)
echo $study['somevar'][1] : It prints out OKoK (1st element)
Проще говоря, используя var_dump ($study), я получил
["somevar"]=>
array(2) {
[0]=>
string(8) "blahblah"
[1]=>
string(4) "OKoK"
В study -> somevar нет 2-го элемента .. Итак, только два (0-й и 1-й)
Теперь, в основном, я хочу использовать этот массив для поиска в нем с помощью $games внутри функции play
. Итак, для этого внутри функции; как вы можете видеть выше в псевдокоде, который я использовал
array_search(strtolower($games), a second element)
Теперь этот второй элемент внутри array_search, я хочу, чтобы все элементы массива $study (т.е. blahblah, OKoK) были преобразованы в нижний регистр, чтобы я мог легко сопоставлять с помощью array_search
метода. Следовательно, я использовал логику для array_map('strtolower', $study['somevar'])
..
и поместил его в array_search
метод, подобный :
$lol = array_search(strtolower($games), array_map('strtolower', $study['somevar']));
Теперь, в дальнейшем коде, я передаю некоторые значения в функции play('OkOk', 10);
, и в этом OKOK должен соответствовать нашему жестко запрограммированному массиву $study, поскольку элемент 1 содержит этот ключ. Это логика. Но я получаю ошибку типа
array_map() Argument #2 should be an array in ..........
array_search() [<a href='function.array-search'>function.array-search</a>]: Wrong datatype for second argument in .........
Комментарии:
1. Все еще ошибка @RyanVincent
array_map(): Argument #2 should be an array in <somepath>
amp;array_search(): Wrong datatype for second argument in <somepath>
2. @RyanVincent При печати study[‘somevar’] [0] вне функции он хорошо выдает результат.
3. @RyanVincent Брат, я обновил вопрос с помощью полных шагов. Пожалуйста, посмотрите еще раз
4. «Версия запущенного PHP — 5.2.x!» — найдите лучший веб-хост, например, сейчас . Срок службы PHP 5.2 истек более пяти лет назад.
5. Нет оправдания для запуска 5.2 в 2016 году. Он мертв уже почти 6 лет php.net/eol.php . Единственный реальный ответ на ваш вопрос: обновите версию r php до 7.0. Или, по крайней мере, последняя версия 5.6. Если ваш хост не сотрудничает, вместо этого перейдите к нормальному или получите дешевый vps.
Ответ №1:
Вы не можете использовать use
в PHP 5.2, потому что он был введен в PHP 5.3, но вы можете использовать global
:
function play( $games, $time ) {
global $study;
//Do something here
$lol = array_search(strtolower($games), array_map('strtolower', $study['somevar']));
}
Комментарии:
1. Не работает.. Я обновил вопрос с дополнительным подробным обзором