【问题标题】:How to pass variable array structure to array如何将可变数组结构传递给数组
【发布时间】:2019-08-17 15:36:41
【问题描述】:

我有以下动态创建的变量:

$var = "'a'=>'123', 'b'=>'456'";

我用它来填充一个数组:

$array=array($var);

我不能$array=array('a'=>'123', 'b'=>'456'),因为 $var 总是不同的。

所以它告诉我:

Array
(
    [0] => 'a'=>'123', 'b'=>'456'
)

这是错误的,因为我需要得到:

Array
(
    [a] => 123
    [b] => 456
)

我的代码有什么问题? 提前致谢。

【问题讨论】:

  • 如果出于某种原因必须首先生成一个字符串为$var。考虑将其生成为 JSON 字符串 - {"a":"123", "b":"456"},因为您可以使用标准 JSON 方法对其进行转换。
  • 如果您可以控制动态字符串的创建,您应该使用 JSON 编码来传递值。那么就这么简单json_encode()json_decode()

标签: php arrays variables


【解决方案1】:

理想情况下,您应该利用 PHP 的语法来填充关联数组,如下所示:

$array = [];
$array['a'] = '123';
$array['b'] = '456';

但是,您可以实际上编写一个脚本来解析您的输入以生成关联数组:

$var = "'a'=>'123', 'b'=>'456'";
preg_match_all ("/'([^']+)'=>'([^']+)'/", $var, $matches);
$array = [];
for ($i=0; $i < count($matches[0]); $i++) {
    $array[$matches[1][$i]] = $matches[2][$i];
}
print_r($array);

打印出来:

Array
(
    [a] => 123
    [b] => 456
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多