2016-07-09 3 views
-2

UpdateПревратить массив значений в массив переменных

После первоначальной обратной связи я получил, что мой вопрос не ясно, я решил начать все сначала и попросить его больше контекста и более четкими деталями. См. Many php mysqli queries from one prepared statement without knowing how many parameters

Извините за путаницу.

Оригинал Вопрос

Я хотел бы динамически превратить ассоциативный массив:

$array = 
[ 
    'key' => 'AX-2NV', 
    'id' => 2 
] 

в массив переменных:

[$key,$id] // where $key='AX-2NV' and $id=2 

Когда я не имею никакого контроля над входной массив. Переменная создания достаточно просто с extractfunction

extract($array); // will create the variables $key and $id 

Задача состоит в том, как я могу получить результирующие переменные в массиве, когда я не знаю заранее, что будет имена переменных или размер входного массива ?

Это может быть нерелевантно, но целью является вызов функции call_user_func_array и передача ее массива [$key,$id] в качестве параметров функции, которую я вызываю. Я считал делать просто

call_user_func_array($function,array_values($array)); 

Но я все еще нужен дескриптор эти переменные для дальнейшей обработки, так что просто используя значения и перемещение на это не вариант.

+1

Почему вы не можете использовать только '' массив '', который вы создали в первую очередь? Я не вижу смысла извлекать его. – imtheman

+0

Что вы подразумеваете под * дальнейшей обработкой *, вы можете легко прокручивать свой массив и делать все, что хотите. Проблема непонятна !!! –

+0

Прошу прощения. Позвольте мне переписать вопрос, чтобы сделать проблему более ясной. Я вернусь. – BeetleJuice

ответ

1

Вы можете создать массив, содержащий список всех ключей из другого массива с помощью array_keys().

extract() может иметь последствия для безопасности, я надеюсь, что это какая-то гипотетическая проблема, потому что в противном случае вы должны извлекать данные из самого массива и не преобразовывать его элементы в глобальные переменные.

+0

I Мне жаль. Позвольте мне переписать вопрос, чтобы сделать проблему более ясной. Я вернусь. – BeetleJuice

+0

Я задал тот же вопрос более четко (надеюсь) по адресу http://stackoverflow.com/questions/38277450/many-php-mysqli-queries-from-one-prepared-statement-without-knowing-how-many-par – BeetleJuice

1

Очень странная идея, но ...

foreach ($array as $_k => $_v) { 
    $$_k = $_v; 
} 

Итак ... ваш

$array = 
[ 
    'key' => 'AX-2NV', 
    'id' => 2 
] 

Будет

$key = 'AX-2NV'; 
$id = 2; 

EDIT

I understo od ...))

$newArray = array_values($array) 

Это то, что вы хотите.

+0

Спасибо. Это не решает мою проблему, а наоборот, потому что это вдохновило меня на решение. Получение переменных из массива не было сложной частью для меня. 'extract ($ array)' также создавал бы '$ key' и' $ id' vars, как я сказал в OP. То, что вы помогли мне понять, хотя это способ справиться с этими варами, хотя я не знаю их имен. В рамках созданного цикла я могу сохранить ссылку на '$$ _ k' в массиве и получить доступ к ней позже, используя индекс массива. Благодарю. – BeetleJuice

+0

Я рад, что может вам помочь) [PHP: переменные переменные] (http://php.net/manual/en/language.variables.variable.php) –

+0

Ваше редактирование не так. Я уже рассматривал 'array_values' перед публикацией (см. Последнюю строку кода в моем исходном Q). Это моя ошибка. Я плохо справлялся с объяснением того, что я пытался сделать. Я опубликовал лучшее объяснение моей проблемы (http://stackoverflow.com/questions/38277450/many-php-mysqli-queries-from-one-prepared-statement-without-knowing-how-many-par), но ваш ответ здесь поставил мой разум в правильном направлении. – BeetleJuice

Смежные вопросы