2014-09-07 2 views
0

У меня есть набор в Python:PHP array_map против Python карты с лямбда

set = {list} [[['x']], [], [], []] 
i = 1 
j = 0 

и это моя проблема Код:

set[i] += map(lambda x: [j] + x, set[i - 1]) 

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

set = {list} [[['x']], [[0, 'x']], [], []] 

можно ли создать такую ​​же лямбда-функцию в любом случае с помощью массива array_map и lambda в PHP ?

Любые идеи?

Я попытался это:

$set[$i] = array_map(function ($s,$j) { return $j + $s; } , $set[$i - 1]); 

Но это не будет работать, так как параметр $ J не доступен внутри лямбда

+1

Пожалуйста, не используйте карту с лямбдами. Вместо этого используйте понимание списка: '[[j] + x для x в наборе [i-1]]' Также не вызывать переменную 'set', особенно если это не фактический набор (но даже если это: не делай этого). – ThiefMaster

+0

Привет, но это не вопрос. Мне нужен код в PHP, а также любое другое решение, чтобы прийти к тем же результатам, что и код в Python. – gwinger

+0

Вот почему я разместил его как комментарий ... – ThiefMaster

ответ

1

$j не должен быть параметром функции; вместо этого, это должна быть переменная, захваченная из окружающей области, что-то вроде:

$set[$i] = array_map(function ($s) use ($j) { return $j + $s; } , $set[$i - 1]); 
Смежные вопросы