php - 从字符串为 Mongo 创建 PHP 数组
问题描述
我Laravel
安装了Moloquent
(Mongo)。Mongo
不一定是问题,当模型加载“JSON”记录时,它变成了一个 PHP 关联数组。我需要能够在模型中创建一个函数,该函数通过字符串返回数组元素。
例如:
$search1 = 'folder1/folder2/folder3/item';
//would look like: $array['folder1'][folder2'][folder3']['item']
$search2 = 'folder1/picture1/picture';
//would look like: $array['folder1'][picture1']['picture']
echo getRecord($search1);
echo getRecord($search2);
function getRecord($str='') {
//this function take path as string and return array
return $result;
}
我想我可以使用??
运算符,但我必须形成一个数组“检查”含义:$array['1']['2']['3']
如果我有 3 个元素深或 1 ( $array['1']
) 或 5 ( ),我将如何形成$array['1']['2']['3']['4']['5']
。
我正在制作一个 api 来向 Mongo 添加项目或文件夹。
输入:"f1/f2/item"
我有这个功能:
echo print_r($j->_arrayBuilder('f1/f2/item'), true);
public function _arrayBuilder($folderPath)
{
$ret = array();
$arr = explode('/', $folderPath);
Log::info("Path Array:\n" . print_r($arr, true));
$x = count($arr) - 1;
Log::info("Count: " . $x);
for ($i = 0; $i <= $x; $i++) {
Log::info("Element of arr: " . $arr[$i]);
$ret = array($arr[$i] => $ret);
}
return $ret;
}
电流输出:
Array
(
[item] => Array
(
[f2] => Array
(
[f1] => Array
(
)
)
)
)
期望输出:
Array
(
[f1] => Array
(
[f2] => Array
(
[item] => Array
(
)
)
)
)
注意:我已经尝试过 PHP 的 array_reverse 并且它不适用于这个.. 多维和非数字..
谢谢你。
解决方案
如果我理解正确,您想获取输入字符串f1/f2/f3/f4/f5/item
并创建array("f1" => array("f2" => array("f3" => array("f4" => array("f5" => array("item" => array()))))))
为此,您可以使用与您尝试过的功能接近的功能:
function buildArr($path) {
$path = array_reverse(explode("/", $path)); // getting the path and reverse it
$ret = array();
foreach($path as $key)
$ret = array($key => $ret);
return $ret;
}
对于print_r(buildArr("f1/f2/item"));
它的输入打印:
Array
(
[f1] => Array
(
[f2] => Array
(
[item] => Array
(
)
)
)
)
希望你的意思。如果不能随意评论
推荐阅读
- c# - 跨线程操作无效:控件''从一个线程访问,而不是在窗口窗体中创建它的线程
- javascript - Rxjs 映射和过滤数组 - 返回单个对象而不是一个数组?
- gcc - 将 i386-elf-gcc 配置线程模式从单一更改为 posix
- python - 我的 python 数据框的一列包含 xml 格式的数据:我该如何解析它?
- react-native - 在 react native 中更改第三方组件的样式
- python - Python regex 中的 \w 中包含哪些(Unicode)数字?
- hyperledger-fabric - Hyperledger Fabric:资产查询上的 ENDORSEMENT_MISMATCH
- mysql - 如何从 MySQl Workbench 中的每个输入表中返回一行的三个单独表中的输出表?
- regex - 通过使用否定的外观来防止正则表达式匹配
- java - 获取二维数组的最大总和