Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从textarea获取数组并将其转换为数组_Php_Arrays - Fatal编程技术网

Php 从textarea获取数组并将其转换为数组

Php 从textarea获取数组并将其转换为数组,php,arrays,Php,Arrays,我需要用户在textarea中输入一个数组,而这个数组可能是一个大数组,我试图序列化它并将其保存为DB编码,但失败了 这是我的代码: if( strpos( $_POST['textarea_array'], 'array' ) !== FALSE ) { $temp_serialized = serialize( $_POST['textarea_array'] ); if( ( $temp_unserialized = @unserialize( $temp_seri

我需要用户在textarea中输入一个数组,而这个数组可能是一个大数组,我试图序列化它并将其保存为DB编码,但失败了

这是我的代码:

if( strpos( $_POST['textarea_array'], 'array' ) !== FALSE ) {

     $temp_serialized = serialize( $_POST['textarea_array'] );

     if( ( $temp_unserialized = @unserialize( $temp_serialized ) !== FALSE ) 
         && is_array( $temp_unserialized ) ) {

         /* Condition FAILED */

         $temp_json = json_encode( $temp_unserialized );
         $final_value = base64_encode( $temp_json );

     }

}
在文本区域中输入的内容示例:简单数组或复杂数组,每个键都有子数组

array( 
   'x_sub_array' => array( 
       'x_1' => 'X 1', 
       'x_2' => 'X 2', 
       'x_3' => 'X 3', 
   );
   'x_2' => 'X 2', 
   'x_3' => 'X 3', 
);

首先,有更简单的方法来传递数据。但如果这是绝对唯一的办法,那么不妨直截了当地回答。如果您的用户严格遵守格式

if(isset($_POST['textarea_array'])){

    $raw = $_POST['textarea_array'];

    //Parse the array section
    $start = strpos($raw, "(");
    $end = strpos($raw, ")");
    $full = substr($raw,$start+1,$end - ($start+1));

    //Remove quotations
    $full = str_replace("'","",$full);

    //Divide string into array of segments `key=>value` as one segment
    $segments = explode(",", $full);

    foreach($segments as $segment){
        //Divide each segment `key=>value` to a temp array
        //Index 0 will hold the key, Index 1 will hold value

        $array_part = explode("=>",$segment);

        //Remove spaces
        $key = trim($array_part[0]);
        $value = trim($array_part[1]);

        //insert into associative array
        $final[$key] = $value;
    }

    //$final now has your associative array
    echo json_encode($final);
}
同样,还有更好的选择

-让用户通过AJAX传递json对象怎么样

-或者让用户输入每个元素并用换行符分隔


但是千万不要依赖serialize或eval,尤其是因为你不想让用户访问你的php页面。

用户如何将“数组”中的每个元素分开?在你解析文本区域之前,文本区域不是一个大字符串吗?本例中的用户是开发人员,需要以其他方式使用此数组。请举例说明用户应该如何在文本区域中输入数组。你想做什么,让他们运行可能的评估?但是它失败了——如何,你得到了什么错误,或者你没有通过php和可能的db查询来检查它们?这张表格在哪?查一下再查一下