У меня есть многомерный массив, например:Использование обратного вызова в Implode()
$values = array(
'one' => array(
'title' => 'Title One',
'uri' => 'http://example.com/one',
),
'two' => array(
'title' => 'Title Two',
'uri' => 'http://example.com/two',
),
);
... и я хотел бы разобрать через что с закрытием в моей implode
функции, а-ля:
$final_string = implode(' | ', function($values) {
$return = array();
foreach($values as $value)
$return[] = '<a href="' . $value['uri'] . '">' . $value['title'] . '</a>';
return $return;
});
Однако это использование дает ошибку Invalid arguments passed
. Есть ли синтаксис, который мне не хватает, что может сделать это использование closures возможным? Я использую PHP v5.3.16.
Согласно документам 'implode' не принимает обратный вызов ... Или я что-то не хватает? Если вы просто хотите сгенерировать массив с помощью функции и использовать ее как параметр, вам нужно будет выполнить функцию с помощью 'call_user_func'. – elclanrs
$ return = array(); foreach ($ values as $ value) $ return [] = ' ccd580ac6753941c6f84fe2e19f229
Спасибо @elclanrs - Возможно, я ошибаюсь в закрытии, но я так не думаю. Анонимная функция, которую я определил в вопросе _does_, возвращает массив, удовлетворяющий требованию 'implode'. Am _I_ отсутствует что-то? :) – jterry