【问题标题】:Turn an array of values into an array of variables将值数组转换为变量数组
【发布时间】:2016-07-09 00:29:08
【问题描述】:

更新

在收到我的问题不清楚的初步反馈后,我决定重新开始,并提供更多背景信息和更清晰的细节。见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));

但我仍然需要处理这些变量以进行进一步处理,因此仅使用这些值并继续前进不是一种选择。

【问题讨论】:

  • 你为什么不能使用你一开始创建的$array?我认为提取它没有任何意义。
  • 你所说的进一步处理是什么意思,你可以轻松地循环遍历你的数组并做任何你想做的事情。问题不清楚!!!
  • 对不起。让我重写问题以使问题更清楚。我会回来的。
  • 同一个问题我问得更清楚了,希望stackoverflow.com/questions/38277450/…

标签: php arrays


【解决方案1】:

您可以使用array_keys() 创建一个数组,其中包含来自另一个数组的所有键的列表。

extract() 可能有安全隐患,我希望这是某种假设性问题,否则您应该从数组本身获取所需的数据,而不是将其项目转换为全局变量。

【讨论】:

【解决方案2】:

很奇怪的想法,但是……

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

所以...你的

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

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

编辑

我明白了……))

$newArray = array_values($array)

这就是你想要的。

【讨论】:

  • 谢谢。它并没有解决我的问题,而是赞成,因为它激发了我的解决方案。从数组中取出变量对我来说并不是棘手的部分。正如我在 OP 中所述,extract($array) 还将创建 $key$id 变量。尽管我不知道它们的名字,但您帮助我意识到的是一种处理这些变量的方法。在您创建的循环中,我可以将$$_k 的引用存储在一个数组中,然后使用数组索引访问它。谢谢。
  • 很高兴能帮到你)PHP: Variable variables
  • 不是您的编辑。在发布之前我已经考虑过array_values(请参阅我原始 Q 中的最后一行代码)。这是我的错,因为我没有很好地解释我想要做什么。我发布了对我的问题的更好解释 (stackoverflow.com/questions/38277450/…),但您在这里的回答让我的思路正确。
  • 我回答了to your new question
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
相关资源
最近更新 更多