如何从单引号数组中生成数组

时间:2016-08-04 13:03:14

标签: php arrays

我不知道如何将单引号数组转换为数组;

例如: -

我有

$Array = '["ID" => 9, "Value" => [40,15,20,25,30]]';
print_r($Array);

然后它显示的字符串不是数组

 ["ID" => 9, "Value" => [40,15,20,25,30]]

所以如何将其转换为数组

就像结果会像这样显示

Array
(
    [ID] => 9
    [Value] => Array
        (
            [0] => 40
            [1] => 15
            [2] => 20
            [3] => 25
            [4] => 30
        )

)

可能你有为什么我把数组放在单引号中,但这不是我要放的。

我在group_concat

mysql之后从数据库中获取数组

这是数组

Array
(
    [0] => Array
        (
            [GPN] => A
            [PKGID] => PKG01
            [Output] => ["ID" => 9, "Value" => [40,15,20,25,30]]
        )
)

这里的输出元素就像它是一个字符串

5 个答案:

答案 0 :(得分:2)

你可以这样做,但可能很危险:

$Array = '["ID" => 9, "Value" => [40,15,20,25,30]]';

eval('$Array = '.$Array.';'); // Could be dangerous

echo '<pre>';
print_r($Array);
echo '</pre>';

在上面的示例中,假设$Array是来自数据库的数据,例如[Output] => ["ID" => 9, "Value" => [40,15,20,25,30]]。由于它来自数据库,因此这意味着DB数据可能存在恶意,eval()很乐意运行您提供的任何内容。

答案 1 :(得分:1)

您可以使用TranslateAnimation translateAnimation = new TranslateAnimation(Animation.ABSOLUTE, 0, Animation.ABSOLUTE, 0, Animation.ABSOLUTE, scale.getY(), Animation.ABSOLUTE, newY); scale.startAnimation(translateAnimation); 将字符串解析为php代码,如下所示:

eval

这只适用于php 5.4及以上版本

<强>注意

如果此字符串包含来自用户的数据,则使用$s = '["ID" => 9, "Value" => [40,15,20,25,30]]'; eval('$a = ' . $s . ';'); print_r($a); 是不安全的。

替代解决方案

如果您是填充数据库记录的人,我建议在插入数据库之前使用evalOutput值序列化为json。 然后,您可以使用json_encode以数组的形式访问数据。

答案 2 :(得分:-1)

<?php

$str   = '["ID" => 9, "Value" => [40,15,20,25,30]]';
$array = eval('return ' . $str . ';');
var_export($array);

输出:

array (
  'ID' => 9,
  'Value' => 
  array (
    0 => 40,
    1 => 15,
    2 => 20,
    3 => 25,
    4 => 30,
  ),
)

答案 3 :(得分:-1)

所以,你的问题基本上是如何将php数组的字符串表示转换为php数组。我不知道任何工具,但你可以使用eval函数。

$arr = []; eval('$arr=' . $Array . ';'); // $arr contains php array

但是这不是值得推荐的,因为您可以执行破坏应用程序安全性的任意代码。在使用它之前,您应该确保$Array不包含任何恶意代码并且所有字符串都被转义。

如果以root用户身份运行应用程序,则更危险。例如: $Array = 'true?print_r($_SERVER['REQUEST_TIME']):0' 上面的代码将打印应用程序的所有服务器数据。

答案 4 :(得分:-1)

我认为这个解决方案。

$array = [
        "ID" => 9,
        "Value" => [40,15,20,25,30],
         ];

print_r($array);

输出:

 /* Array ( [ID] => 9 [Value] => Array ( [0] => 40 [1] => 15 [2] => 20
 [3]=> 25 [4] => 30 ) ) */

其他数组:

 $array =[

         "0" => [
                "GPN" => A,
                "PKGID" => PKG01,
                "Output" => 
                           [
                            "ID" => 9,
                             "Value" => [40,15,20,25,30]
                           ]
                ]
         ];
print_r($array);

输出:

/*Array ( [0] => Array ( [GPN] => A [PKGID] => PKG01 [Output] => Array ( [ID] => 9 [Value] => Array ( [0] => 40 [1] => 15 [2] => 20 [3] => 25 [4] => 30 ) ) ) ) */

建议:名称&#34; PKG01&#34;。

  

psr-1:常量必须以全部大写

声明

来源:psr-1