PHP常量代码生成
遇到的问题:
PM给了一个包含几百条记录的客户和客户代码的excel表,需要将其转成一个PHP的Map数组。一条一条复制很麻烦,所以有了这个库。
输入数据:json,excel文本
输出数据:
PHP二维数组代码 等同于 json的对象数组(第一行作为key)
PHP普通数组代码(只取某一列组成数组,默认第一列)
PHP关联数组代码(只取其中某两列,一列作为key,一列作为value)
json对象数组转php数组(原样输出)
json对象数组转php数组(通过模板过滤)
json字符串美化(可以为每行设置输出前缀)
开发思路
安装
推荐通过composer扩展的方式进行安装
composer require lappcloud/php-code-generator
或者
"lappcloud/php-code-generator": "*"
独立使用
git clone https://github.com/lappcloud/php-code-generator.git && cd php-code-generator && composer update
用待处理字符串特换掉$string,然后执行对应的php文件,如:
php test/1.字符串生成对象数组.php
使用示例
1.生成对象数组,json的概念,这里用起来比较形象(每行一个对象,取第一行作为key)
use lappcloudcodegenGenPHPCode;
// 生成对象数组,json的概念,这里用起来比较形象(每行一个对象,取第一行作为key)
$string = <<<STR
id name sex age
1 张三 man 18
2 李四 man 17
STR;
// 或者 形如 $string 的 json
$json = <<<JSON
[["id","name","sex","age"],["1","u5f20u4e09","man","18"],["2","u674eu56db","man","17"]]
JSON;
try {
$obj = new GenPHPCode();
$obj->intInputType = GenPHPCode::INPUT_TYPE_STRING; // 输入类型为字符串
//$obj->intInputType = GenPHPCode::INPUT_TYPE_JSON; // 输入类型为字符串
$obj->strColDelimiter = "t"; // 列分割符
$obj->strRowDelimiter = "n"; // 输入数据列数
$obj->keys = '1-3';
$obj->intFormatType = GenPHPCode::FORMAT_TYPE_OBJECT_ARRAY;
$res = $obj->str2Code($string);
//$res = $obj->str2Code($json);
} catch (Exception $e) {
echo 'Error:' . $e->getMessage() . "n"; exit;
}
ob_clean();
echo $res;
// 输出:
[
[
'id' => '1',
'name' => '张三',
'sex' => 'man',
'age' => '18',
],
[
'id' => '2',
'name' => '李四',
'sex' => 'man',
'age' => '17',
],
];
2.生成普通数组(只取某一列组成数组,默认第一列)
include 'vendor/autoload.php';
// 生成普通数组(只取某一列组成数组,默认第一列)
$string = <<<STR
1 张三 man 18
2 李四 man 17
STR;
// 或者 形如 $string 的 json
$json = <<<JSON
[["1","u5f20u4e09","man","18"],["2","u674eu56db","man","17"]]
JSON;
try {
$obj = new GenPHPCode();
$obj->intInputType = GenPHPCode::INPUT_TYPE_STRING; // 输入类型为字符串
$obj->intInputType = GenPHPCode::INPUT_TYPE_JSON; // 输入类型为字符串
$obj->strColDelimiter = "t"; // 列分割符
$obj->strRowDelimiter = "n"; // 输入数据列数
$obj->keys = '1-3';
$obj->intFormatType = GenPHPCode::FORMAT_TYPE_ORDINARY_ARRAY;
$res = $obj->str2Code($json);
} catch (Exception $e) {
echo 'Error:' . $e->getMessage() . "n"; exit;
}
ob_clean();
echo $res;
// 输出:
[
'张三',
'李四',
];
3.取excel的第2列数据作为key,第3列作为value,第三列数据作为value生成关联数组
include 'vendor/autoload.php';
// 取excel的第2列数据作为key,第三列数据作为value生成关联数组
$string = <<<STR
1 Q010Y 客户A
1 Q011Y 客户B
STR;
// 或者 形如 $string 的 json
$json = <<<JSON
[[1,"Q010Y","u5ba2u6237A"],[2,"Q011Y","u5ba2u6237B"]]
JSON;
try {
$obj = new GenPHPCode();
$obj->intInputType = GenPHPCode::INPUT_TYPE_STRING; // 输入类型为字符串
//$obj->intInputType = GenPHPCodeGenPHPCode::INPUT_TYPE_JSON; // 输入类型为字符串
$obj->strColDelimiter = "t"; // 列分割符
$obj->strRowDelimiter = "n"; // 输入数据列数
$obj->keys = '1-2';
$obj->intFormatType = GenPHPCode::FORMAT_TYPE_LIST_ARRAY;
$res = $obj->str2Code($string);
} catch (Exception $e) {
echo 'Error:' . $e->getMessage() . "n"; exit;
}
ob_clean();
echo $res;
// 输出:
[
'Q010Y' => '客户A',
'Q011Y' => '客户B',
];
4.json对象数组转php数组(原样输出)
include 'vendor/autoload.php';
use lappcloudcodegenGenPHPCode;
$json = <<<JSON
[{"name":"Google","url":{"0":"value","1":"value","2":"value","field":"value"},"tag":["search","tag1"]},{"name":"Baidu","url":"http://xxx"}]
JSON;
try {
$obj = new GenPHPCode();
$obj->intInputType = GenPHPCode::INPUT_TYPE_JSON;
$obj->intFormatType = GenPHPCode::FORMAT_TYPE_NO;
$res = $obj->str2Code($json);
} catch (Exception $e) {
echo 'Error:' . $e->getMessage() . "n"; exit;
}
ob_clean();
echo $res;
// 输出:
[
[
'name' => 'Google',
'url' => [
'0' => 'value',
'1' => 'value',
'2' => 'value',
'field' => 'value',
],
'tag' => [
'search',
'tag1',
],
],
[
'name' => 'Baidu',
'url' => 'http://xxx',
],
];
5.json对象数组转php数组(通过模板过滤)
include 'vendor/autoload.php';
use lappcloudcodegenGenPHPCode;
$json = <<<JSON
[{"name":"Google","url":{"0":"value","1":"value","2":"value","field":"value"},"tag":["search","tag1"]},{"name":"Baidu","url":"http://xxx"}]
JSON;
$template = [
'name' => true,
'url' => [
'0' => true,
'field' => true,
],
'tag' => true,
];
try {
$obj = new GenPHPCode();
$obj->intInputType = GenPHPCode::INPUT_TYPE_JSON;
$obj->intFormatType = GenPHPCode::FORMAT_TYPE_OBJECT_TEMPLATE;
$obj->template = $template;
$res = $obj->str2Code($json);
} catch (Exception $e) {
echo 'Error:' . $e->getMessage() . "n"; exit;
}
ob_clean();
echo $res;
// 输出:
[
[
'name' => 'Google',
'url' => [
'0' => 'value',
'field' => 'value',
],
'tag' => [
'search',
'tag1',
],
],
[
'name' => 'Baidu',
'url' => [
'0' => [
],
'field' => [
],
],
'tag' => [
],
],
];
6.json对象数组转php数组(通过模板校验)
include 'vendor/autoload.php';
use lappcloudcodegenformatFormatByTemplate;
$json = <<<JSON
[{"name":"Google","url":{"0":"value","1":"value","2":"value","field":"value"},"tag":["search","tag1"]},{"name":"Baidu","url":"http://xxx"}]
JSON;
$template = [
'name' => true,
'url' => [
'0' => true,
'field' => true,
],
'tag' => true,
];
print_r(FormatByTemplate::validate(json_decode($json, true), $template));
// 输出:
//Array
//(
// [0] => Array
// (
// [error_data] => Array
// (
// [name] => Baidu
// [url] => http://xxx
// )
//
// [error_msg] => url是字符串类型
// )
//
//)
License
MIT
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。