PHP array_walk и array_filter

107
30 ноября 2020, 17:40

Выдает вот это: Strict Standards: Only variables should be passed by reference on line 13 Не могу понять где константа. postfix не добавляется.

$postfix = '_my';
error_reporting(E_ALL);
$files = scandir($_SERVER['DOCUMENT_ROOT']);
echo '<pre>';
print_r($files);
array_walk($files = array_filter($files, function($file_name) {
    return $file_name != '.' && $file_name != '..';
}), function(&$file_name) use($postfix) {
    $file_name .= $postfix;
});
print_r($files);

Вот так работает, но сообщение о стандарте так же остается, как будто file_name как не переменная передается.

<?php
$postfix = '_my';
error_reporting(E_ALL);
$files = scandir($_SERVER['DOCUMENT_ROOT']);
echo '<pre>';
print_r($files);
array_walk($files = array_filter($files, function($file_name) {
    return $file_name != '.' && $file_name != '..';
}), function(&$file_name, $key) use($postfix, &$files) {
    $files[$key] .= $postfix;
});
print_r($files);
Answer 1

Давайте посмотрим на сигнатуру функции array_walk() на оф.сайте :

array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] ) : bool

Первый аргумент передаётся функции по ссылке: array &$array (об этом говорит символ амперсанд "&", предваряющий переменную "$array"). В таких случаях нужно сперва получить значение в переменную:

$files = array_filter(...)

И только после - передавать переменную в функцию:

array_walk($files, function(){})
READ ALSO
Документация проекта/проектов + связи

Документация проекта/проектов + связи

Есть несколько проектов, взаимодействующих друг с другом по http api или console api или еще как-нибудь

112
Размер watermark imagine

Размер watermark imagine

Мне на картинку необходимо вставить текстовый watermark использую следующий код:

115
Как определить создателя беседы через VK API?

Как определить создателя беседы через VK API?

В ВК с помощью метода messagesgetConversationMembers можно получить список участников беседы и их статус в беседе в виде JSON

153
Apache запретить доступ к файлам, Laravel

Apache запретить доступ к файлам, Laravel

Всем приветПо пути storage/5/sas24s15

110